标签:new void binary initial att nbsp null ack tac
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 void flatten(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
标签:new void binary initial att nbsp null ack tac
原文地址:http://www.cnblogs.com/lilyfindjobs/p/7398693.html