• leetcode Flatten Binary Tree to Linked List


    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;
        }
  • 相关阅读:
    Intern Day7
    Intern Day7
    Intern Day7
    Intern Day6
    Intern Day6
    Intern Day6
    Intern Day6
    Intern Day6
    萧萧远树疏林外,一半秋山带夕阳
    飞线
  • 原文地址:https://www.cnblogs.com/lilyfindjobs/p/7398693.html
Copyright © 2020-2023  润新知