`
dugu108
  • 浏览: 23317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
Hints:

If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.

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

        flatten(root.left);
        flatten(root.right);

        TreeNode leftTmp = getLastNode(root.left);
        if (leftTmp != null) {
            leftTmp.right = root.right;
            root.right = root.left;
            root.left = null;
        }
    }

    public TreeNode getLastNode(TreeNode root) {
        TreeNode result = root;
        if (result != null) {
            while (result.right != null) {
                result = result.right;
            }
        }
        return result;
    }
}

 

分享到:
评论

相关推荐

    cpp-算法精粹

    Flatten Binary Tree to Linked List Populating Next Right Pointers in Each Node II 二叉树的构建 Construct Binary Tree from Preorder and Inorder Traversal Construct Binary Tree from Inorder and ...

    Tree and Divide Conquer

    文章目录Tree and Divide Conquer一、树的性质Divide and Conquer模版114 Flatten Binary Tree to Linked List1)从最简单的case开始2)一般case3) merge总结 一、树的性质 参考:Tree总结 由于树的结构,这种数据...

    leetcode:leetcode解题

    leetcode做过的LeetCode的题目记录一下。对一些比较经典的题型进行分类总结。数据结构 数组 字符串 队列 链表 双指针 栈 堆 树 二叉搜索树 字典树 线段树 并查集 哈希表 图基础... Flatten Binary Tree to Linked List

    leetcode答案-leetcode-tools:leetcode-工具

    leetcode 答案leetcode 的工具 这个项目提供了一些工具来更容易地测试 leetcode 答案。 树:切片 <-> TreeNode 此工具有助于将切片转换为 ...--name="Flatten Binary Tree to Linked List" --type=tree

    Flatten-Binary-Tree-To-Linked-List

    Flatten-Binary-Tree-To-Linked-List

    geojson-flatten:在geojson中展平多部分几何和几何集合

    geojson-flatten 将文件中的MultiPoint,MultiPolygon,MultiLineString和GeometryCollection几何图形展平为简单的非复杂几何图形。 如果传入FeatureCollection,则返回FeatureCollection。 如果传入单个功能,则...

    leetcode92java-Algorithms::memo:在这里你可以找到我在算法和数据结构方面的进展

    flatten_binary_tree_to_linked_list Java 中等的 100.00% 100.00% binary_tree_pruning Java 中等的 100.00% 100.00% insert_into_a_binary_search_tree Java 中等的 100.00% 100.00% maximum_level_sum_of_a_...

    Laravel开发-flatten

    Laravel开发-flatten 用于照明框架的包,它将页面扁平化为纯HTML

    LeetCode最全代码

    * [Linked List](https://github.com/kamyu104/LeetCode#linked-list) * [Stack](https://github.com/kamyu104/LeetCode#stack) * [Queue](https://github.com/kamyu104/LeetCode#queue) * [Heap]...

    broccoli-flatten

    西兰花压扁 扁平化文件树,因此所有...tree = flatten ( tree , options ) ; 选项 支持以下选项: destDir目录存放所有文件的位置 ###例子 var pickFiles = require ( 'broccoli-static-compiler' ) ; var flatten

    Tool for Flatten A Folder

    命令行工具。拷贝多个目录下的指定文件到目标目录

    flatten_2.0

    lighthouse3d里面glsl教程3的例子

    Python库 | flatten_json-0.1.12.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:flatten_json-0.1.12.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Python中flatten( ),matrix.A用法说明

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个折叠成一维的数组。但是该函数只能适用于numpy对象,即array或者mat,普通的list列表是不行...‘C’ means to flatten in row-major (C-style)

    flatten_gds.tcl

    flatten_gds.tcl

    flatten-maven-plugin:扁平化Maven插件

    MojoHaus Flatten Maven插件 这是 。 1.0.x分支: 快速开始 这个插件会生成您pom.xml的扁平版本,并使maven可以安装和部署该版本,而不是原始pom.xml。 <groupId>org.codehaus.mojo <artifactId>flatten-...

    Python中flatten( )函数及函数用法详解

    flatten只能适用于numpy对象,即array或者mat,普通的list列表不适用!。 a.flatten():a是个数组,a.flatten()就是把a降到一维,默认是按行的方向降 。 a.flatten().A:a是个矩阵,降维后还是个矩阵,矩阵.A(等效...

    array-flatten:用JavaScript展平多维数组

    import { flatten } from "array-flatten" ; flatten ( [ 1 , [ 2 , [ 3 , [ 4 , [ 5 ] , 6 ] , 7 ] , 8 ] , 9 ] ) ; //=> [1, 2, 3, 4, 5, 6, 7, 8, 9] ( function ( ) { flatten ( arguments ) ; //=> [1, 2, 3] ...

    object-flatten:根据谓词函数展平嵌套对象

    键被重写为path.to.nested.object 。安装$ npm install --save object-flatten例子有关完整示例,请参见 。 import flatten , { isLast } from 'object-flatten'const flattened = flatten ( isLast , { margin : {...

    flatten-maven-plugin:简化用于项目部署的Maven项目描述符

    Flatten Maven插件 生产发布 开发发布 安装 相似的插件 插件功能 取代公开的身份 解决依赖版本范围 根据范围排除依赖项 可选地包括传递依赖 根据xml标签名称删除pom.xml成员 用生成的pom.xml.flatten切换项目pom....

Global site tag (gtag.js) - Google Analytics