Java实现-将二叉树拆成链表

来源:互联网 发布:java注册登录代码 编辑:程序博客网 时间:2024/06/06 00:20

将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 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     */    public void flatten(TreeNode root) {        // write your code here       if(root==null)return;Stack<TreeNode> stack=new Stack<TreeNode>();stack.push(root);while(!stack.isEmpty()){TreeNode node=stack.pop();if(node.right!=null){stack.push(node.right);}if(node.left!=null)stack.push(node.left);node.left=null;if(stack.isEmpty())node.right=null;elsenode.right=stack.peek();}    }    }



原创粉丝点击