leetcode Flatten Binary Tree to Linked List
阿新 • • 發佈:2017-08-20
initial void sta pla binary pre log ive recursive
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
解法:
iterative:
public voidflatten(TreeNode root) { if (root==null) { return; } Stack<TreeNode> stack=new Stack<TreeNode>(); stack.push(root); while(!stack.isEmpty()){ TreeNode current=stack.pop(); if (current.right!=null) stack.push(current.right); if(current.left!=null) stack.push(current.left); if (!stack.isEmpty()) current.right = stack.peek(); current.left=null; } }
recursive:
public void flatten(TreeNode root) { if (root==null) { return; } TreeNode left=root.left; TreeNode right=root.right; flatten(left); flatten(right); root.left=null; root.right=left; TreeNode tmp=root; while(tmp.right!=null) { tmp=tmp.right; } tmp.right=right; }
leetcode Flatten Binary Tree to Linked List