[LeetCode] Flatten Binary Tree to Linked List
2015-01-17 21:08
417 查看
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
The flattened tree should look like:
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.
思路一:递归的思想。使用后序递归的方法。先将左右子树转换为链表,再将左右子树连接
时间复杂度O(n),空间复杂度O(logN)
思路二:迭代的方法。依据题目与前序遍历之间的关系。使用前序遍历的方法。
For example,
Given
1 / \ 2 5 / \ \ 3 4 6
The 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.
思路一:递归的思想。使用后序递归的方法。先将左右子树转换为链表,再将左右子树连接
时间复杂度O(n),空间复杂度O(logN)
/** * 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 == nullptr) return; flatten(root->left); flatten(root->right); //三方合并,将左子树形成的链表插入到root和root->right之间 TreeNode *p = root->right; while (p->right) p = p->right; p->right = root->right; root->right = root->left; root->left = nullptr; } };
思路二:迭代的方法。依据题目与前序遍历之间的关系。使用前序遍历的方法。
void flatten(TreeNode *root) { if(root == NULL) return; while(root){ if(root->left){ TreeNode *pre = root->left; while(pre->right) pre = pre->right; pre->right = root->right; root->right = root->left; root->left = NULL; } root = root->right; } }
相关文章推荐
- 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: 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