原题链接 题目描述:

翻转一棵二叉树。

示例:

输入:

1
2
3
4
5
6

     4
   /   \
  2     7
 / \   / \
1   3 6   9

输出:

1
2
3
4
5
6

     4
   /   \
  7     2
 / \   / \
9   6 3   1

解题思路:

  1. 直接层序遍历,遍历过程中直接将左右子节点互换即可

golang示例代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func invertTree(root *TreeNode) *TreeNode {
    // 层序遍历
    queue := []*TreeNode{root}
    for len(queue) > 0 {
        curr := queue[0]
        queue = queue[1:]
        if curr == nil {
            continue
        }
        // 直接节点互换
        curr.Left, curr.Right = curr.Right, curr.Left
        queue = append(queue, curr.Left)
        queue = append(queue, curr.Right)
    }
    return root
}

继续加油