[数据结构][Leetcode]翻转二叉树
来源:互联网 发布:mac系统cad字体设置 编辑:程序博客网 时间:2024/06/07 09:45
1.问题描述
Invert a binary tree.For example:
to
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.
问题来源于Leetcode
https://leetcode.com/problems/invert-binary-tree/
2.问题分析
翻转一个二叉树,直观上看,就是把二叉树的每一层左右顺序倒过来。比如问题中的例子,第三层1-3-6-9经过变换后变成了9-6-3-1,顺序反过来就对了。
再仔细观察一下,对于上面的例子,根节点(root)的左子节点及其所有的子孙节点构成根节点的左子树(left subtree),同样的,根节点(root)的右子节点及其所有的子孙节点构成根节点的右子树(right subtree)。因此翻转一个二叉树,就是把根节点的左子树翻转一下,同样的把右子树翻转一下,在交换左右子树就可以了。
当然,翻转左子树和右子树的过程和当前翻转二叉树的过程没有区别,就是递归的调用当前的函数就可以了。
因此,翻转二叉树的步骤可总结如下:
- 翻转根节点的左子树(递归调用当前函数)
- 翻转根节点的右子树(递归调用当前函数)
- 交换根节点的左子节点与右子节点
3.程序代码
class Solution{public:void exchange(TreeNode* root){ TreeNode* node=root; if(node!=NULL){ TreeNode* temp=node->left; node->left=node->right; node->right=temp; }} TreeNode* invertTree(TreeNode* root) { TreeNode* node=root; if(root==NULL) { return root; } invertTree(node->left);//翻转左子树 invertTree(node->right);//翻转右子树 exchange(node);//交换左子节点与右子节点 return root;}};
0 0
- [数据结构][Leetcode]翻转二叉树
- leetCode之翻转二叉树
- [LeetCode] 226 翻转二叉树
- 翻转二叉树(leetcode-226)
- LeetCode Invert Binary Tree 翻转二叉树
- 【LeetCode】Invert Binary Tree 翻转二叉树
- 【数据结构】二叉树的翻转递归与非递归实现
- leetcode 226 Invert Binary Tree 翻转二叉树
- leetcode系列(11)二叉树翻转 Invert Binary Tree
- [LeetCode] Invert Binary Tree - 二叉树翻转系列问题
- 【LeetCode】226. Invert Binary Tree 二叉树翻转
- LeetCode 226 Invert Binary Tree(翻转二叉树)
- C++二叉树翻转
- 翻转二叉树
- 翻转二叉树
- 题目:翻转二叉树
- LintCode 翻转二叉树
- LinkCode-翻转二叉树
- javascript积累七
- MFC类与对应的头文件
- Android ORM框架GreenDao用法
- POJ1363
- 【甘道夫】基于scikit-learn实现逻辑回归LogisticRegression
- [数据结构][Leetcode]翻转二叉树
- Android Loader
- vc遍历网页表单并自动填写提交
- 连接本地Oracle 11g时 ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
- maven 常用命令
- db2注意事项
- Scala 第十六讲 隐函数 从大数据菜鸟走上大师的历程 [此博文包含图片]
- 如何更好的通过Inflate layout的方式来实现自定义view
- 08_Java Applet基础