首页 > 其他 > 详细

Invert Binary Tree

时间:2015-06-16 09:22:24      阅读:179      评论:0      收藏:0      [点我收藏+]

Invert a binary tree.

     4
   /     2     7
 / \   / 1   3 6   9
to
     4
   /     7     2
 / \   / 9   6 3   1
Trivia:
This problem was inspired by this original tweet by Max Howell:

Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.

题目解析:

将一棵树的左右子树互换。

方法一:

迭代的方法,从树根到树叶,由上往下,广度遍历此树的每一个节点,将此节点的左右子节点互换,直到遍历完整棵树。代码如下:
class Solution {
public:
    
    TreeNode* invertTree(TreeNode* root) {
       if(root==NULL) return NULL;
      
       deque<TreeNode*> qu;
       qu.push_front(root);
       while(!qu.empty())
       {
           TreeNode* node=qu.front();
            TreeNode* left=node->left;
            node->left=node->right;
           node->right=left;
           qu.pop_front();
           if(node->left)
           qu.push_front(node->left);
           if(node->right)
           qu.push_front(node->right);
       }
       return root;
    }
};

方法二

用递归的方法,相同的条件是,经invertTree函数的节点root的左子树是该root原来的右子树转换之后的,也就是说从下往上的过程。代码如下:
class Solution {
public:
    
    TreeNode* invertTree(TreeNode* root) {
       if(root==NULL) return NULL;
       TreeNode* left=root->left;
       TreeNode* right=root->right;
       root->left=invertTree(right);
       root->right=invertTree(left);
       return root;
    }
};



Invert Binary Tree

原文:http://blog.csdn.net/sinat_24520925/article/details/46509115

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!