Flatten a binary tree
先取得 order 後再連起來就好了
public void flatten(TreeNode root) {
// write your code here
if (root == null) {
return;
}
//get order
List<TreeNode> order = new ArrayList<>();
getOrder(root, order);
TreeNode dummy = new TreeNode(0);
for (int i = 0; i < order.size(); i++) {
TreeNode node = order.get(i);
node.left = null;
dummy.right = node;
dummy = dummy.right;
}
}
public void getOrder(TreeNode root, List<TreeNode> order) {
if (root == null) {
return;
}
order.add(root);
getOrder(root.left, order);
getOrder(root.right, order);
return;
}