Skip to content

Instantly share code, notes, and snippets.

@jianminchen
Created July 16, 2016 20:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jianminchen/8388016355c3e3a393c71b17d508e79b to your computer and use it in GitHub Desktop.
Save jianminchen/8388016355c3e3a393c71b17d508e79b to your computer and use it in GitHub Desktop.
flatten - facebook code lab - flatten the binary tree - pass test cases
/**
* Definition for binary tree
* class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode flatten(TreeNode a) {
if(a==null || a.val == -1)
return null;
TreeNode l_subtree = flatten(a.left); //
TreeNode r_subtree = flatten(a.right);
TreeNode lastNode = lastNode(l_subtree);
a.left = null;
if(l_subtree != null) // do not forget, bug001 - runtime error.
{
a.right = l_subtree;
lastNode.right = r_subtree;
}
return a;
}
public TreeNode lastNode(TreeNode a)
{
TreeNode lastNode = a;
while(lastNode !=null && lastNode.val != -1 &&
lastNode.right !=null && lastNode.right.val != -1)
{
lastNode = lastNode.right;
}
return lastNode;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment