您的位置:首页 > 其它

【LeetCode】Flatten Binary Tree to Linked List

2015-03-28 23:57 393 查看
题目:Flatten Binary Tree to Linked List

<span style="font-size:18px;">/**LeetCode Flatten Binary Tree to Linked List
* 题意:给定一个二叉树,将其转变为一个相当于单链表的结构,观察可知该结构即:每一个节点左儿子为空,右儿子指向自己先序遍历时的下一个节点
* 思路:有观察可得,应对其进行先序遍历,得到正确的序列连接起来
* Definition for binary tree
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
package javaTrain;

public class Train18 {
public void flatten(TreeNode root) {
if(root== null || (root.left == null && root.right == null)) return;
preOrder(root);
return;
}
private TreeNode preOrder(TreeNode root){
if(root== null || (root.left == null && root.right == null)) return root;
TreeNode left = root.left;
TreeNode right = root.right;
TreeNode last;
root.left = null;
if(left != null){
root.right = left;
last = preOrder(left);
last.left = null;
if(right != null){
last.right = right;
return preOrder(right);
}
else return last;
}
else{
root.right = right;
return preOrder(right);
}
}
}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息