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;
}

results matching ""

    No results matching ""