Flatten Binary Tree to Linked List:二叉树变更结构
来源:互联网 发布:淘宝仿真金属狙击枪 编辑:程序博客网 时间:2024/05/23 16:36
Given a binary tree, flatten it to a linked list in-place.
For example,
Given
1 / \ 2 5 / \ \ 3 4 6The flattened tree should look like:
1 \ 2 \ 3 \ 4 \ 5 \ 6
click to show hints.
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 a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public void dfs(TreeNode n,List<TreeNode> l){ if(n == null) return; l.add(n); dfs(n.left,l); dfs(n.right,l); } public void flatten(TreeNode root) { if(root == null) return; TreeNode p = root; ArrayList<TreeNode> l = new ArrayList<TreeNode>(); dfs(root,l); p.left = p.right = null; for(TreeNode n:l){ if(n!=root){ p.right = n; p.left = null; p = p.right; } } p.right = null; p.left = null; }}
然而有更简洁的代码。如果先右后左再笨神的遍历,得到的结果正好是先序的倒转,而且可以直接在遍历的时候调整,更简洁!
private TreeNode prev = null;public void flatten(TreeNode root) { if (root == null) return; flatten(root.right); flatten(root.left); root.right = prev; root.left = null; prev = root;}第二种方法参考https://leetcode.com/problems/flatten-binary-tree-to-linked-list/discuss/
阅读全文
0 0
- Flatten Binary Tree to Linked List:二叉树变更结构
- Flatten Binary Tree to Linked List 二叉树拉伸成链表
- Flatten Binary Tree to Linked List (二叉树转前序链表)【leetcode】
- 【leetcode 二叉树摊直】Flatten Binary Tree to Linked List
- 将二叉树拆成链表 Flatten Binary Tree to Linked List
- Flatten Binary Tree to Linked List 二叉树变成链表@LeetCode,
- 把二叉树精简成单链表 Flatten Binary Tree to Linked List
- 【二叉树&前序遍历】Flatten Binary Tree to Linked List
- LeetCode | Flatten Binary Tree to Linked List(二叉树转化成链表)
- Flatten Binary Tree to Linked List 将二叉树转换为链表
- LeetCode OJ 之 Flatten Binary Tree to Linked List (把二叉树转换成链表)
- Flatten Binary Tree to Linked List 将二叉树转为链表
- LintCode(Flatten Binary Tree to Linked List)翻转二叉树为链表 的变体
- LeetCode 114. Flatten Binary Tree to Linked List(摊平二叉树)
- Flatten Binary Tree to Linked List 将二叉树转成链表形式
- 二叉树遍历应用114. Flatten Binary Tree to Linked List
- [LeetCode] Flatten Binary Tree to Linked List 将二叉树展开成链表 C++
- 5.1.11—二叉树的遍历—Flatten Binary Tree to Linked List
- ESP8266 AT指令集开发实例(WeMos D1开发板)
- Nutz 设计模式应用 --- 工厂方法
- 面试感悟----一名3年工作经验的程序员应该具备的技能
- POJ 刷题系列:1503 Integer Inquiry
- 测试
- Flatten Binary Tree to Linked List:二叉树变更结构
- 图像增强—空域滤波,椒盐噪声/高斯噪声 均值滤波器/中值滤波器
- SGD BGD MBGD各种梯度下降的处理方式
- C#:C高精度算法移植
- python抓取博客正文
- SpringMVC日期转换之JsonSerialize
- 【Linux】在Linux上安装VNC
- tornado + django + nginx + mysql网站源码分享
- 时域分析的matlab实现