首页 > 代码库 > Flatten Binary Tree to Linked List
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 6The flattened tree should look like:
1 2 3 4 5 6
将二叉树转为线性链表 从其转换结果看 是将二叉树的先序遍历结果串成了链表 所以 可以先对二叉树进行先序遍历 将其节点值存好 然后构建链表 代码如下:
public class Solution { List<Integer> res=new ArrayList<Integer>(); public void flatten(TreeNode root) { if(root==null)return ; preorder(root); TreeNode tmp=root; for(int i=1;i<res.size();i++){ TreeNode n=new TreeNode(res.get(i)); tmp.right=n; tmp.left=null; tmp=n; } } public void preorder(TreeNode root){ if(root==null)return; res.add(root.val); preorder(root.left); preorder(root.right); } }
另外也可以直接进行 转换 每次都将左边所有的节点放到右边 再将原右边的所有节点放到原左边的最后一个右节点处 代码如下:
public class Solution { public void flatten(TreeNode root) { if(root==null) return ; while(root!=null){ TreeNode tmp=root.right; root.right=root.left; root.left=null; TreeNode p=root; while(p.right!=null){ p=p.right; } p.right=tmp; root=root.right; } } }
Flatten Binary Tree to Linked List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。