将二叉树拆成链表

来源:互联网 发布:java basicstroke 编辑:程序博客网 时间:2024/04/27 00:40

将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。

 注意事项

不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出

样例
              1               \     1          2    / \          \   2   5    =>    3  / \   \          \ 3   4   6          4                     \                      5                       \                        6
/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */public class Solution {    /**     * @param root: a TreeNode, the root of the binary tree     * @return: nothing     * 思路         left = root.left;         right = root.right;         last = left.right 的最后一个节点         如果有left节点        {           root.left = NULL;           root.right = left;           last = right;        }        递归执行     */    public void flatten(TreeNode root) {        // write your code here        if(root!=null){            TreeNode left = root.left;            TreeNode right = root.right;            TreeNode last= root;            flatten(left);            flatten(right);            if(left!= null)            {                last=left;                while(last.right!=null){                    last=last.right;                }                root.left= null;                root.right=left;                last.right=right;                            }        }    }}
0 0
原创粉丝点击