LeetCode OJ:Flatten Binary Tree to Linked List
来源:互联网 发布:安信车辆软件 编辑:程序博客网 时间:2024/06/11 12:27
Flatten Binary Tree to Linked List
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1 / \ 2 5 / \ \ 3 4 6The flattened tree should look like:
1 \ 2 \ 3 \ 4 \ 5 \ 6
click to show hints.
Hints:
If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.
算法思想:
假设dfs(root->left)表示的是左子树是一颗单调向下的树,当前节点要做的事就是,将这颗左子树添加到当前节点与当前节点右节点之间。
例如如题所示,对于2节点,就是将3加入到2和4之间,对于1,就是将2-3-4这颗单调向下树加入到1和5之间,一次类推
/** * Definition for binary tree * 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; flatten(root->left); flatten(root->right); if(root->left==NULL)return; TreeNode *p=root->left; while(p->right)p=p->right; p->right=root->right; root->right=root->left; root->left=NULL; }};
递归版2
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: void flatten(TreeNode *root) { flatten(root,NULL); }private: TreeNode *flatten(TreeNode *root,TreeNode *tail){ if(NULL == root)return tail; root->right=flatten(root->left,flatten(root->right,tail)); root->left=NULL; return root; }};
迭代版
/** * Definition for binary tree * 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(NULL==root)return; stack<TreeNode *>s; s.push(root); while(!s.empty()){ auto p=s.top(); s.pop(); if(p->right) s.push(p->right); if(p->left) s.push(p->left); p->left=NULL; if(!s.empty()) p->right=s.top(); } }};
0 0
- LeetCode OJ:Flatten Binary Tree to Linked List
- LeetCode OJ - Flatten Binary Tree to Linked List
- LeetCode OJ Flatten Binary Tree to Linked List
- <LeetCode OJ> 114. Flatten Binary Tree to Linked List
- LeetCode: Flatten Binary Tree to Linked List
- LeetCode Flatten Binary Tree to Linked List
- LeetCode: Flatten Binary Tree to Linked List
- [Leetcode] Flatten Binary Tree to Linked List
- [LeetCode] Flatten Binary Tree to Linked List
- Leetcode: Flatten Binary Tree to Linked List
- leetcode Flatten Binary Tree to Linked List
- LeetCode Flatten Binary Tree to Linked List
- LeetCode - Flatten Binary Tree to Linked List
- 【leetcode】Flatten Binary Tree to Linked List
- [LeetCode]Flatten Binary Tree to Linked List
- [Leetcode]Flatten Binary Tree to Linked List
- [leetcode]Flatten Binary Tree to Linked List
- LeetCode-Flatten Binary Tree to Linked List
- LeetCode OJ:Distinct Subsequences
- HDU1247 字典树
- pku1013
- Live Streaming
- c++学籍管理系统
- LeetCode OJ:Flatten Binary Tree to Linked List
- 浅谈android的跑马灯效果(文字滚动)
- 大学三年积累的教学资源分享和推荐!
- VS2010中仅一次配置opencv的方法
- 机器学习的最佳入门学习资源
- Scala 访问权限控制——Scala Access Modifiers
- Android中内置的图片资源
- regexbuddy 教程
- sqlldr使用