1. 程式人生 > >leetcode Flatten Binary Tree to Linked List

leetcode Flatten Binary Tree to Linked List

initial void sta pla binary pre log ive recursive

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


解法:
iterative:
public void
flatten(TreeNode root) { if (root==null) { return; } Stack<TreeNode> stack=new Stack<TreeNode>(); stack.push(root); while(!stack.isEmpty()){ TreeNode current=stack.pop(); if (current.right!=null) stack.push(current.right); if
(current.left!=null) stack.push(current.left); if (!stack.isEmpty()) current.right = stack.peek(); current.left=null; } }

recursive:

 public void flatten(TreeNode root) {
        if (root==null) {
        return;
    }
   TreeNode left=root.left;
   TreeNode right
=root.right; flatten(left); flatten(right); root.left=null; root.right=left; TreeNode tmp=root; while(tmp.right!=null) { tmp=tmp.right; } tmp.right=right; }

leetcode Flatten Binary Tree to Linked List