LeetCode Js-226. Invert Binary Tree

    LeetCode Js-Binary Tree

    Given the root of a binary tree, invert the tree, and return its root.

    給予一個二元的樹,反轉這個樹和回傳他的根。
    

    Example 1:

    Input: root = [4,2,7,1,3,6,9]
    Output: [4,7,2,9,6,3,1]
    

    Example 2:

    Input: root = [2,1,3]
    Output: [2,3,1]
    

    Example 3:

    Input: root = []
    Output: []
    

    solution:
    1. 程式碼開頭有一個對二元樹節點的定義,即 TreeNode 函式>
    2. 每個節點都有一個值 val,以及指向左子節點和右子節點的指標 left 和 right。
    3. 接著執行 invertTree,它接受一個二元樹的根節點作為參數,並執行其中的 recursion。
    4. 接著運用解構賦值中的交換變數來翻轉該二元樹的結構。

    Code 1:

    // ES5
    //Definition for a binary tree node.
    // function TreeNode(val, left, right) {
    //   this.val = (val === undefined ? 0 : val)
    //   this.left = (left === undefined ? null : left)
    //   this.right = (right === undefined ? null : right)
    // }
    
    //ES6+
    //Definition for a binary tree node.
    class TreeNode {
      constructor(val, left = null, right = null) {
        this.val = val;
        this.left = left;
        this.right = right;
      }
    }
    
    var invertTree = function(root) {
    
      traverse(root)
      return root
    };
    
    var traverse = function(root) {
      if (root === null) return
    
      let temp = root.right
      root.right = root.left
      root.left = temp
      //[root.left, root.right] = [root.right, root.left]
    
      traverse(root.left)
      traverse(root.right)
    }
    

    FlowChart:
    Example 1

    let test1 = new TreeNode(4,
      new TreeNode(2,
        new TreeNode(1),
        new TreeNode(3)
      ),
      new TreeNode(7,
        new TreeNode(6),
        new TreeNode(9)
      )
    ); //[4,2,7,1,3,6,9]
    
    let ans1 = new TreeNode(4,
        new TreeNode(7,
            new TreeNode(9),
            new TreeNode(6)
        ),
        new TreeNode(2,
            new TreeNode(3),
            new TreeNode(1)
        )
    ); //[4,7,2,9,6,3,1]
    

    Example 2

    let test2 = new TreeNode(2,
        new TreeNode(1),
        new TreeNode(3)
    ); //[2,1,3]
    
    let ans2 = new TreeNode(2,
        new TreeNode(3),
        new TreeNode(1)
    ); //[2,3,1]
    

    Example 2

    let test3 = new TreeNode(); //[]
    let ans3 = new TreeNode() //[]