[LeetCode]Flatten Binary Tree to Linked List
来源:互联网 发布:2017英语网络热词 编辑:程序博客网 时间:2024/06/15 11:23
题目描述
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将二叉树变为链表结构。
解题思路
将二叉树分为三部分考虑,root,leftTree,rightTree,按如下步骤进行递归:
- 将右子树flatten,并得到其最末尾的节点;
- 将左子树flatten,并得到其最末尾的节点;
- 将左子树的尾节点的右指针指向右子树的根节点;
- root的右指针指向左子树的根节点;
代码
/** * 将二叉树变为链表结构 * @param root */public static void flatten(TreeNode root) {getFlattenTree(root);}/** * 将二叉树变为链表结构,并返回其尾节点 * @param root * @return */public static TreeNode getFlattenTree(TreeNode root) {if(root==null)return null;if (root.left == null && root.right == null)return root;TreeNode leftTailNode = null;TreeNode rightTailNode = null;//如果右子树不为空,得到右子树flatten后的最末节点if (root.right != null) {rightTailNode = getFlattenTree(root.right);}if (root.left != null) {//如果右子树不为空,得到左子树flatten后的最末节点leftTailNode = getFlattenTree(root.left);if(root.right == null){//如果右子树为空,则最后返回的是左子树flatten后的最末节点rightTailNode = leftTailNode;}//将左子树插入到右子树之前leftTailNode.right = root.right;leftTailNode.left = null;root.right = root.left;//左子树赋为空root.left = null;}//返回flatten后的尾节点return rightTailNode;}
0 0
- 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
- 中国机器人市场悄然崛起:去年购买数量超过3.6万台
- 关于521
- js怎样连接birth报表
- LINUX环境下的DNW使用
- 找点
- [LeetCode]Flatten Binary Tree to Linked List
- YII search 方法中 compare比较时的一个bug
- Android WebView与JavaScript混合使用教程
- oracle 截取字符串substr(),REGEXP_SUBSTR()
- POJ 1273 Drainage Ditches
- ios7 UINavigationbar 遮挡TableView的问题
- python <2> 压缩备份文件
- Hdu3787
- ORA-04031案例一则(非常详细的解释)