题目(leecode T226):
给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
方法:
迭代法
翻转二叉树,即从根节点开始,一一交换每个节点的左右孩子节点,然后递归此过程,将根节点的左右孩子节点再分别作为参数传入交换节点的函数中。重复此过程,直到结束。就完成了二叉树的翻转。
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if (root == NULL) return root;
swap(root->left, root->right); // 根节点
invertTree(root->left); // 左孩子节点
invertTree(root->right); // 右孩子节点
return root;
}
};
递归法解决此问题只需在出栈或队列处理节点时,交换该节点的左右孩子节点即可。但中序遍历不适用,其他都可以。因为中序遍历有时会把一个节点交换两次导致结果不对。