老师,我有点不明白反转二叉树这个递归问题为什么要这么写
来源:7-2 一个简单的二叉树问题引发的血案 Invert Binary Tree
tataxqy
2019-04-03
主要这行代码不太懂
swap(root->left,root->right);
前面不是会一直到左子树得最左得叶子结点吗?那为什么传入得参数是根结点得左右节点呢?
写回答
1回答
-
这里的root,不是整个二叉树的root,而是传入invertTree这个函数中的参数,叫做root。在递归调用的过程中,整棵二叉树的每一个节点。都被叫做了root。
具体可以参考下面的注释,看能否理解?
class Solution { public: // 这个方法的语义是:翻转以root为根节点的二叉树 TreeNode* invertTree(TreeNode* root) { // 对于空树,不作任何操作 if(root == NULL) return NULL; // 翻转root的左子树(以root->left为根节点) invertTree(root->left); // 翻转root的右子树(以root->right为根节点) invertTree(root->right); // 交换root的左右子树 swap(root->left, root->right); return root; } };
继续加油!:)
012019-04-05
相似问题