二叉树翻转
翻转一个二叉树,就是把二叉树的每一层左右顺序倒过来;
实例
input:
1
/ \
2 3
/ \ / \
4 5 6 7
output:
1
/ \
3 2
/ \ / \
7 6 5 4
思路
比如上面的示例,第三层4-5-6-7经过变换后变成了7-6-5-4,顺序反过来就是翻转;
翻转二叉树的步骤一般是:
1、交换当前结点的左子结点与右子结点;
2、翻转当前结点的左子树;
3、翻转当前结点的右子树。
代码
// invertBT
// 通过递归方式翻转一颗二叉树
func invertBT(root *Node) *Node {
if root == nil {
return root
}
// 交换左右孩子节点
root.left, root.right = root.right, root.left
// 递归处理左右子树
invertBT(root.left)
invertBT(root.right)
return root
}