📅  最后修改于: 2023-12-03 14:58:31.210000             🧑  作者: Mango
门 | GATE-CS-2016(套装1)|第 41 题
这是一道GATE-CS 2016年的考题,主要考察对于递归和二叉树的理解。本题要求读者理解题目中给出的二叉树结构,并针对该结构进行递归遍历。
对于给定的二叉树,从根节点(root)开始,对于每一个节点,将左节点(左儿子)的值赋给右节点,将当前节点的值赋给左节点,再依次递归遍历左右节点。给出遍历后该二叉树的结构。
root.val = 1;
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
1
/ \
2 3
/ \
4 5
1
/ \
3 2
/ \
5 4
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def invertTree(root: TreeNode) -> TreeNode:
if not root:
return None
root.left, root.right = root.right, root.left
invertTree(root.left)
invertTree(root.right)
return root
以上代码是python的实现,主要思路就是递归遍历每一个节点,并交换其左右节点的值。需要注意的一点是,我们需要使用后续遍历,即先左后右再根,每次递归时左右节点已经交换。