LeetCode | Flatten Binary Tree to Linked List(二叉树转化成链表)
2014-08-14 20:09
573 查看
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.
题目解析:
这棵树的先序遍历是有序的。并且根据结构的特性,变形后,按照右子树链形成链表形式。
一般对树进行操作,也都用递归的形式。将做子树递归后形成的链表,插入到根结点和右子树之间。这样递归往复进行即可。
一定要有递归和模块的思想。就假设左边递归后已经形成,之后就按照链表处理就行了。这种方法比其他方法简单。
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.
题目解析:
这棵树的先序遍历是有序的。并且根据结构的特性,变形后,按照右子树链形成链表形式。
一般对树进行操作,也都用递归的形式。将做子树递归后形成的链表,插入到根结点和右子树之间。这样递归往复进行即可。
一定要有递归和模块的思想。就假设左边递归后已经形成,之后就按照链表处理就行了。这种方法比其他方法简单。
class Solution { public: void flatten(TreeNode *root) { if(root == NULL) return ; if(root->left){ flatten(root->left); TreeNode *cur = root->left; while(cur->right){ cur = cur->right; } cur->right = root->right; root->right = root->left; root->left = NULL; } if(root->right) flatten(root->right); } };
相关文章推荐
- LeetCode:114_Flatten Binary Tree to Linked List | 将一棵二叉树变成链表的形式 | Medium
- Flatten Binary Tree to Linked List (二叉树转前序链表)【leetcode】
- LeetCode Flatten Binary Tree to Linked List 将二叉树展开成链表
- [LeetCode]Flatten Binary Tree to Linked List(二叉树转链表)
- [C++]LeetCode: 102 Flatten Binary Tree to Linked List (二叉树转前序链表)
- [LeetCode] Flatten Binary Tree to Linked List 将二叉树展开成链表 C++
- Flatten Binary Tree to Linked List 二叉树变成链表@LeetCode,
- [LeetCode] Flatten Binary Tree to Linked List 将二叉树展开成链表
- LeetCode-Flatten Binary Tree to Linked List-二叉树展开成链表-二叉树递归
- 【LeetCode-面试算法经典-Java实现】【114-Flatten Binary Tree to Linked List(二叉树转单链表)】
- 将二叉树拆成链表 Flatten Binary Tree to Linked List
- Flatten Binary Tree to Linked List 将二叉树转换为链表
- [LeetCode 114] - 将树平面化为链表(Flatten Binary Tree to Linked List)
- Flatten Binary Tree to Linked List 将二叉树转为链表
- 把二叉树精简成单链表 Flatten Binary Tree to Linked List
- [LintCode] Flatten Binary Tree to Linked List 将二叉树展开成链表
- LintCode(Flatten Binary Tree to Linked List)翻转二叉树为链表 的变体
- 【leetcode 二叉树摊直】Flatten Binary Tree to Linked List
- 【LeetCode-面试算法经典-Java实现】【114-Flatten Binary Tree to Linked List(二叉树转单链表)】
- lintcode flatten-binary-tree-to-linked-list 将二叉树拆成链表 前序扁平化 中序扁平化