zoukankan      html  css  js  c++  java
  • 114. 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
    题目含义:要按照前序遍历的顺序,将其变成一个单链表(但还是用树结构存)
    方法一:
     1     public void flatten(TreeNode root) {
     2 //        思路是先利用DFS的思路找到最左子节点,然后回到其父节点,把其父节点和右子节点断开,将原左子结点连上父节点的右子节点上,然后再把原右子节点连到新右子节点的右子节点上,然后再回到上一父节点做相同操作
     3        if (root ==null) return;
     4        if (root.left !=null) flatten(root.left);
     5        if (root.right !=null ) flatten(root.right);
     6        TreeNode tmp = root.right;
     7        root.right = root.left;
     8        root.left = null;
     9        while (root.right!=null) root = root.right;
    10        root.right = tmp;    
    11     }

    方法二:

     1     public void flatten(TreeNode root) {
     2 //        是从根节点开始出发,先检测其左子结点是否存在,如存在则将根节点和其右子节点断开,将左子结点及其后面所有结构一起连到原右子节点的位置,把原右子节点连到元左子结点最后面的右子节点之后。
     3          TreeNode cur = root;
     4          while (cur!=null) {
     5              if (cur.left!=null) {
     6                  TreeNode p = cur.left;
     7                  while (p.right != null) p = p.right;
     8                  p.right = cur.right;
     9                  cur.right = cur.left;
    10                  cur.left = null;
    11              }
    12              cur = cur.right;
    13         }       
    14     }


  • 相关阅读:
    css float
    java基础77
    java基础75
    java基础73
    java基础72
    java基础71
    java基础630
    django-模版学习
    Django--- 网页显示时间
    创建一个django项目
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7715269.html
Copyright © 2011-2022 走看看