iT邦幫忙

2022 iThome 鐵人賽

DAY 11
2
自我挑戰組

挑戰 blind 75: 以圖解方式練習解題系列 第 35

圖解 blind 75: Tree - Invert Binary Tree(3/3)

  • 分享至 

  • xImage
  •  

Invert Binary Tree

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

Examples

Example 1:

https://assets.leetcode.com/uploads/2021/03/14/invert1-tree.jpg

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

Example 2:

https://assets.leetcode.com/uploads/2021/03/14/invert2-tree.jpg

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

Example 3:

Input: root = []
Output: []

Constraints:

  • The number of nodes in the tree is in the range [0, 100].
  • -100 <= Node.val <= 100

解析

題目給定一個二元樹的 root

實作一個演算法把數中所有原本左邊的結點換成右邊的結點

已知每個結點都由左結點與右邊結點組成

所以 要反轉整個樹的左右結點等於 把root 的左右結點互換 + 原本左子樹做反轉 + 原本右子樹做反轉

程式碼

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

困難點

  1. 看出每個轉換結點的遞迴關係

Solve Point

  • [x] Understand what problem would like to solve
  • [x] Analysis Complexity

上一篇
圖解 blind 75: Tree - Subtree of Another Tree(2/3)
下一篇
圖解 blind 75: Tree - Maximum Depth of Binary Tree(1/3)
系列文
挑戰 blind 75: 以圖解方式練習解題93
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言