lintcode:将二叉树拆成链表
题目
将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。
注意事项
不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。
1
\
1 2
/ \ \
2 5 => 3
/ \ \ \
3 4 6 4
\
5
\
6
解题
修改前序遍历
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param root: a TreeNode, the root of the binary tree
* @return: nothing
* 前序遍历:根左右
* 修改根的right指向左部分
* 左部分的right指向右部分
*/
public void flatten(TreeNode root) {
// write your code here
// 空结点
if(root == null)
return;
// 左右结点都空
if(root.left==null && root.right==null)
return;
// 左结点空
if(root.left==null){
TreeNode right = root.right;
flatten(right);
return;
}
// 右节点空
if(root.right==null){
TreeNode left = root.left;
root.right = left; flatten(left);
root.left = null;// left结点设置为空
return;
}
// 左右结点都不空
TreeNode left = root.left;
TreeNode right = root.right;
root.right = left; flatten(left); TreeNode p = left;
while(p.right!=null){ // 找到left部分的最右结点
p = p.right;
}
p.right = right;
flatten(right); root.left = null; // left结点设置为空
return;
}
}
lintcode:将二叉树拆成链表的更多相关文章
- lintcode 453 将二叉树拆成链表
将二叉树拆成链表 描述 笔记 数据 评测 将一棵二叉树按照前序遍历拆解成为一个假链表.所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针. 注意事项 不要忘记将左儿子标 ...
- Lintcode---将二叉树拆成链表
将一棵二叉树按照前序遍历拆解成为一个假链表.所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针. 注意事项 不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时 ...
- LintCode_453 将二叉树拆成链表
题目 将一棵二叉树按照前序遍历拆解成为一个假链表.所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针. 样例 1 \ 1 2 / \ \ 2 5 => 3 / \ \ ...
- [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 T ...
- LeetCode 114| Flatten Binary Tree to Linked List(二叉树转化成链表)
题目 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 解析 通过递归实现:可以用先序遍历, ...
- [LeetCode] 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 T ...
- [LintCode] Flatten Binary Tree to Linked List 将二叉树展开成链表
Flatten a binary tree to a fake "linked list" in pre-order traversal. Here we use the righ ...
- leetcode 114二叉树转换成链表
解法一 可以发现展开的顺序其实就是二叉树的先序遍历.算法和 94 题中序遍历的 Morris 算法有些神似,我们需要两步完成这道题. 将左子树插入到右子树的地方 将原来的右子树接到左子树的最右边节点 ...
- 114. Flatten Binary Tree to Linked List -- 将二叉树转成链表(in-place单枝树)
Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...
随机推荐
- QT 十六进制字符串转化为十六进制编码
/*************************************************Function: hexStringtoByteArray()Description: 十六进制字 ...
- svn中的图标解释
黄色感叹号(有冲突): --这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不 允许你提交,防止你的提交覆盖了 ...
- Lua利用cjson读写json示例分享
本文结合本人的实际使用经验和代码示例,介绍如何在Lua中对json进行encode和decode,需要的朋友可以参考下 我这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能 ...
- Min Stack
Min Stack Design a stack that supports push, pop, top, and retrieving the minimum element in constan ...
- c++ _beginthread
c++多线程编程 #include <windows.h> #include <process.h> /* _beginthread, _endthread */ #inclu ...
- Android -- View
setContentView 只要你使用过Activity ...
- tomcat设置内存大小
-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
- 2014103《JAVA程序设计》第一周学习总结
本周,在刻苦看了三天课本之后,终于对JAVA这门课程有了一定的认识.了解了JAVA的前世今生,JAVA的三大平台:Java SE.Java EE与Java ME.其中Java SE又可分为四个主要的部 ...
- hdu 4004 The Frog's Games
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4004 The annual Games in frogs' kingdom started again ...
- javascript去除首尾空白字符
if ( twocode.replace(/^\s+|\s+$/g,"")=="" ) { alert("二维码不能为空"); docume ...