二叉树——226. 翻转二叉树

二叉树——226. 翻转二叉树

题目:

思路:

二叉树我们常用递归的想法,所以我们尝试使用一种方法,然后不断递归从而实现翻转二叉树。

本题显而易见,就是交换左右节点,就可以实现了。但是还没完,有了方法还不够,我们还要确定遍历顺序。

遍历顺序的确定也很重要,遍历顺序就是我们使用之前想到的那个方法达到翻转二叉树这个目的的顺序。很显然,在本题中就是先把根节点的左右节点交换,然后再去往下遍历,以上就是大致思路。(第一次写这个,有点啰嗦,思路可能没有那么清晰和有逻辑,见谅)。

代码:

class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        // 根节点为空,直接return
        if(root == NULL) return nullptr;

        /**前序遍历开始**/
        // 对于根节点的处理方法,即交换左右节点
        TreeNode* tmp=root->right;
        root->right=root->left;
        root->left=tmp;
        
        invertTree(root->left);		// 左
        invertTree(root->right);	// 右

        return root;
    }
};

结果:

Tips:

本来原来是用两个暂时的树节点实现左右节点交换,然后现在有了一个,确实有了0.1MB的提升,剩下的暂时没想到。

posted @ 2021-03-20 23:53  Originhhh  阅读(52)  评论(0)    收藏  举报