博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode – Refresh – Binary Tree Upside Down
阅读量:6002 次
发布时间:2019-06-20

本文共 1905 字,大约阅读时间需要 6 分钟。

Recursive method can be unstand easily:

1. Assume we get the sub node with this transition. So we need to make the current node.

2. As the symmetic, the finished sub node will replace the position of current node.

3. old current->left = parent ->right, old current->right = parent, since we passed the these from argument. (one corner case : if parent == NULL, there is no parent->right)

 

This is a button up recursive:

1 /** 2  * Definition for binary tree 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     TreeNode *getTree(TreeNode *root, TreeNode *parent) {13         if (!root) return parent; //Find the most left, but root is NULL, so the new root is parent.14         TreeNode *current = getTree(root->left, root); //This is sub node, but after conversion, it replace the current node.15         root->left = parent == NULL ? NULL : parent->right;16         root->right = parent;17         return current;18     }19     TreeNode *upsideDownBinaryTree(TreeNode *root) {20         return getTree(root, NULL);21     }22 };

 

 

Here's the top down iterative:

1 /** 2  * Definition for binary tree 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     TreeNode *upsideDownBinaryTree(TreeNode *root) {13      if (!root) return root;14      TreeNode *parent = NULL, *parentRight = NULL;15      while (root) {16          TreeNode *lnode = root->left;17          root->left = parentRight;18          parentRight = root->right;19          root->right = parent;20          parent = root;21          root = lnode;22      }23      return parent;24     }25 };

 

转载于:https://www.cnblogs.com/shuashuashua/p/4346213.html

你可能感兴趣的文章
安卓混合开发之Cordova,NativeWebView两种实现
查看>>
git设置socks代理
查看>>
桶排序
查看>>
石化数字化交付
查看>>
如何用windows Live writer 撰写blog
查看>>
RHEL6入门系列之十九,硬盘分区与格式化
查看>>
Linux下升级 OpenSSH
查看>>
标准功能模块组件 -- 名片管理组件,C\S 版本的标准用例程序,可以参考权限实现方法...
查看>>
zygote进程图
查看>>
ldap快速配置
查看>>
docker之docker-machine用法
查看>>
IIS 7启用static JSON文件能POST方法
查看>>
P5205 【模板】多项式开根
查看>>
微博mini for Windows Phone 8 开发那些事
查看>>
redis文章索引
查看>>
OpenSSH利用处理畸形长度密码造成的时间差,枚举系统用户(CVE-2016-6210)
查看>>
Javascript回调函数
查看>>
可能是最简单的面向对象入门教程(二)为什么要有类型
查看>>
配置Openfiler做ISCS实验
查看>>
Maven启用代理访问
查看>>