Flatten Binary Tree to Linked List
2015-08-25 22:16
375 查看
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
The flattened tree should look like:
Hints:
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.
开始想的太简单了,很困,也没认真思考,直接看的别人怎么做的,这道题还是很考验思维的,解法和以前那些深度优先算法不一样,思考清楚了之后,题目也就好解了,很久没用递归解题了,导致都忘了可以用递归来解了,很多的关于树的题都可以考虑用递归来解·····································
代码如下:
For example,
Given
1 / \ 2 5 / \ \ 3 4 6
The flattened tree should look like:
1 \ 2 \ 3 \ 4 \ 5 \ 6
Hints:
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.
开始想的太简单了,很困,也没认真思考,直接看的别人怎么做的,这道题还是很考验思维的,解法和以前那些深度优先算法不一样,思考清楚了之后,题目也就好解了,很久没用递归解题了,导致都忘了可以用递归来解了,很多的关于树的题都可以考虑用递归来解·····································
代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void flatten(TreeNode* root) { if(root==NULL) return ; if(root->left!=NULL) { TreeNode* leftpart=root->left; TreeNode* rightpart=root->right; root->left=NULL; root->right=leftpart; TreeNode* temp=root->right; while(temp->right!=NULL) { temp=temp->right; } temp->right=rightpart; } flatten(root->right); } };
相关文章推荐
- linux下如何启动sybase
- 命令行参数
- OJ 刷题---串的简单处理
- 二十年目睹之怪状 序
- HDu 1198 Farm Irrigation
- 野人学Android基础篇之初探UI控件第三课--Button
- final、finally和finalize的区别
- final、finally和finalize的区别
- data类型的数据抽取年份或月份的函数
- TCP CLOSE_WAIT 过多解决方案
- 约瑟夫环方法小结
- 【leetcode】Flatten Binary Tree to Linked List,初次使用指针的指针的引用的方法
- UVA 1225 Digit Counting 【ACM/ICPC Danang 2007】
- 蚂蚁碰撞概率
- css hack技巧
- POJ2676 2918 Sudoku 暴搜
- javascript+dom
- iOS自定义警告框 OC 如何写可变参数的函数
- Perl 学习(十)
- 【python】python读写excel