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

  • 相关阅读:
    在Flask/Django中增加下载Excel的功能
    如何设置原创声明
    python3中用django下载文件,中文名乱码怎么办?
    关于状态机工作流的编程方法
    用python解析word文件(三):style
    用python解析word文件(二):table
    用python解析word文件(一):paragraph
    python中的轻量级定时任务调度库:schedule
    在windows下的虚拟环境中使用tk,要留神了
    压平列表
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8719720.html
Copyright © 2011-2022 走看看