白話解 Leetcode - 226 Invert Binary Tree

Posted by Alan Zhan on Sunday, June 12, 2022

226. Invert Binary Tree

https://leetcode.com/problems/invert-binary-tree/


題意

將整棵樹的所有左右節點互相對調。

解題思路

我們可以把每個節點都視為是一個 root 節後,然後遍例所有的 root 節點,並且將每個 root 節點的左右節點互換即可。

  1. 判斷 root 是不是為 nil ,如果是結束該 root 節點的遍例。
  2. 將該 root 的左右節點對調。
  3. 將左節點和右節點當作 root,繼續遞歸調用 invertTree 方法,直到第一步被觸發結束遍例。

原始碼

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func invertTree(root *TreeNode) *TreeNode {
    if root == nil {
        return root
    }
    
    root.Left, root.Right = root.Right, root.Left
    invertTree(root.Left)
    invertTree(root.Right)
    return root
}

結尾

你有更好或更簡單的解決方案嗎?

歡迎到我的 Facebook Alan 的筆記本 留言,順手給我個讚吧!你的讚將成為我持續更新的動力,感謝你的閱讀,讓我們一起學習成為更好的自己。