Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1
/ \
2 5
/ \ \
3 4 6
The flattened tree should look like:
1
\
2
\
3
\
4
\
5
\
6
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public void flatten(TreeNode root) { if (root==null) { return; } if (root.left==null) { flatten(root.right); return; } TreeNode lefTreeNode=root.left; TreeNode righTreeNode=root.right; if (righTreeNode==null) { flatten(lefTreeNode); root.left=null; root.right=lefTreeNode; return; } if (lefTreeNode.left==null && lefTreeNode.right==null&& righTreeNode.right==null && righTreeNode.left==null) { root.left=null; root.right=lefTreeNode; lefTreeNode.right=righTreeNode; return; } flatten(lefTreeNode); flatten(righTreeNode); root.left=null; root.right=lefTreeNode; lefTreeNode.left=null; TreeNode node=lefTreeNode; while (node.right!=null) { node=node.right; } node.right=righTreeNode; return; } }
本文介绍了一种将二叉树结构通过特定算法展平为链表的方法。通过递归方式处理二叉树的左右子节点,最终实现原地转换。此过程涉及到遍历二叉树、调整指针等步骤。
772

被折叠的 条评论
为什么被折叠?



