leetcode--FlattenBinaryTreetoLinkedList
来源:互联网 发布:mac电源适配器坏了 编辑:程序博客网 时间:2024/06/06 13:07
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">思路:顺序为前序遍历的顺序</span>
需要注意的地方是需要对初始的root做修改而不是返回新的root。
public void flatten(TreeNode root)
这里传入的root只是指向root的指针,如果root=new TreeNode(val),root就不再指向root了。因此修改初始的root的话,需要修改root的值以及root的子节点,而不是将root指向一个新的节点。
TreeNode root=new TreeNode(val);
flatten(root)
此时函数外核函数内的root其实是两个指针,都指向root。
import java.util.LinkedList;import java.util.Queue;/** * Created by marsares on 15/6/16. */public class FlattenBinaryTreetoLinkedList { Queue<Integer>queue=new LinkedList<Integer>(); public void flatten(TreeNode root) { if(root==null)return; traversal(root); TreeNode current=root; while(!queue.isEmpty()){ current.val=queue.poll(); current.left=null; if(current.right==null&&!queue.isEmpty())current.right=new TreeNode(0); current=current.right; } } private void traversal(TreeNode root){ if(root==null)return; queue.add(root.val); traversal(root.left); traversal(root.right); } public static void main(String[]args){ FlattenBinaryTreetoLinkedList fbtl=new FlattenBinaryTreetoLinkedList(); BinaryTreeSerialize bts=new BinaryTreeSerialize(); TreeNode root=bts.Unserialize("{1,2,5,3,4,6}"); fbtl.flatten(root); System.out.println(bts.Serialize(root)); }}
0 0
- leetcode--FlattenBinaryTreetoLinkedList
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- OC学习--JSON解析和XML解析
- 区分定理(Theorem)、引理(Lemma)、推论(Corollary)等概念
- OC学习--Block
- execute、executeQuery和executeUpdate之间的区别
- 第七章
- leetcode--FlattenBinaryTreetoLinkedList
- C++第六章习题第一题
- iOS --- Objective-C中的内存管理
- Cocos2d-x 3.0坐标系详解
- android ListView几种重要属性
- 为什么选择做硬件而不是吃香的软件?
- Digital Booklet - Taylor Swift Karao-pdf
- 菜鸟学Android笔记(三十四):实现请求转发和请求包含
- The-Swift-Programming-Language-pdf