zoukankan      html  css  js  c++  java
  • 114 Flatten Binary Tree to Linked List 二叉树转换链表

    给定一个二叉树,使用原地算法将它 “压扁” 成链表。
    示例:
    给出:
             1
            /
           2   5
          /   
         3   4   6
    压扁后变成如下:
       1
       
         2
         
           3
           
             4
             
               5
               
                 6
    提示:
    如果您细心观察该扁平树,则会发现每个节点的右侧子节点是以原二叉树前序遍历的次序指向下一个节点的。

    详见:https://leetcode.com/problems/flatten-binary-tree-to-linked-list/description/

    Java实现:

    递归实现:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public void flatten(TreeNode root) {
            if(root==null){
                return;
            }
            if(root.left!=null){
                flatten(root.left);
            }
            if(root.right!=null){
                flatten(root.right);
            }
            TreeNode tmp=root.right;
            root.right=root.left;
            root.left=null;
            while(root.right!=null){
                root=root.right;
            }
            root.right=tmp;
        }
    }
    

    非递归实现:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public void flatten(TreeNode root) {
            if(root==null){
                return;
            }
            TreeNode cur=root;
            while(cur!=null){
                if(cur.left!=null){
                    TreeNode p=cur.left;
                    while(p.right!=null){
                        p=p.right;
                    }
                    p.right=cur.right;
                    cur.right=cur.left;
                    cur.left=null;
                }
                cur=cur.right;
            }
        }
    }
    

     python实现:

     参考:https://www.cnblogs.com/grandyang/p/4293853.html

  • 相关阅读:
    换个角度认识大数据(上)——何为元数据
    如何优雅地停止Spark Streaming Job
    split("\,")引起的java.lang.ArrayIndexOutOfBoundsException异常解决方案
    spark streaming整合kafka
    Kafka相关命令
    Hive性能调优(二)----数据倾斜
    Hive SQL编译过程(转)
    Hive性能调优(一)----文件存储格式及压缩方式选择
    Hive表的几种存储格式
    spring框架之javaconfig
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8719720.html
Copyright © 2011-2022 走看看