(前序 简单)leetcode 226翻转二叉树

代码随想录说用前序遍历和后序遍历方便,而中序遍历比较绕。

活用自定义函数使程序结构更为清晰

这里用的是前序遍历,根结点root指向left和root,交换root的左右指向

执行过程:

也就是交换下例的 2 ,7

使得交换后,2后面指向的结点跟着到右边去了,7后面指向的左右结点跟着到左边的结点去了。

(突然想到可以做剪枝,遇到叶子结点就直接回溯。)

再交换2 后面的左右结点

7交换后面的左右结点

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        bitree(root);
return root;
    }
    void bitree(TreeNode *root)
    {
        if(root==NULL)
        return ;
        sweap1(root,root->left,root->right);
        bitree(root->left);
        bitree(root->right);
        
        


    }
    void sweap1(TreeNode *root,TreeNode *left,TreeNode *right)
{
    TreeNode *t=new TreeNode;
    t=right;
root->right=root->left;
root->left=t;

}

};
相关推荐
励志要当大牛的小白菜37 分钟前
ART配对软件使用
开发语言·c++·qt·算法
qq_5139704440 分钟前
力扣 hot100 Day56
算法·leetcode
PAK向日葵2 小时前
【算法导论】如何攻克一道Hard难度的LeetCode题?以「寻找两个正序数组的中位数」为例
c++·算法·面试
爱喝矿泉水的猛男4 小时前
非定长滑动窗口(持续更新)
算法·leetcode·职场和发展
YuTaoShao4 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
YouQian7724 小时前
Traffic Lights set的使用
算法
go54631584656 小时前
基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
图像处理·人工智能·深度学习·神经网络·算法
aramae6 小时前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法
大锦终6 小时前
【算法】前缀和经典例题
算法·leetcode
想变成树袋熊7 小时前
【自用】NLP算法面经(6)
人工智能·算法·自然语言处理