leetcode--FlattenBinaryTreetoLinkedList

来源:互联网 发布:mac电源适配器坏了 编辑:程序博客网 时间:2024/06/06 13:07

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">思路:顺序为前序遍历的顺序</span>

需要注意的地方是需要对初始的root做修改而不是返回新的root。

public void flatten(TreeNode root)

这里传入的root只是指向root的指针,如果root=new TreeNode(val),root就不再指向root了。因此修改初始的root的话,需要修改root的值以及root的子节点,而不是将root指向一个新的节点。

TreeNode root=new TreeNode(val);

flatten(root)

此时函数外核函数内的root其实是两个指针,都指向root。

import java.util.LinkedList;import java.util.Queue;/** * Created by marsares on 15/6/16. */public class FlattenBinaryTreetoLinkedList {    Queue<Integer>queue=new LinkedList<Integer>();    public void flatten(TreeNode root) {        if(root==null)return;        traversal(root);        TreeNode current=root;        while(!queue.isEmpty()){            current.val=queue.poll();            current.left=null;            if(current.right==null&&!queue.isEmpty())current.right=new TreeNode(0);            current=current.right;        }    }    private void traversal(TreeNode root){        if(root==null)return;        queue.add(root.val);        traversal(root.left);        traversal(root.right);    }    public static void main(String[]args){        FlattenBinaryTreetoLinkedList fbtl=new FlattenBinaryTreetoLinkedList();        BinaryTreeSerialize bts=new BinaryTreeSerialize();        TreeNode root=bts.Unserialize("{1,2,5,3,4,6}");        fbtl.flatten(root);        System.out.println(bts.Serialize(root));    }}


0 0
原创粉丝点击