【发布时间】:2020-07-27 20:30:03
【问题描述】:
例如,在这个问题中:https://leetcode.com/problems/invert-binary-tree/ 正确的解决方案是:
TreeNode* invertTree(TreeNode* root) {
if(root!=NULL)
{
TreeNode* tmp = (root->left);
root->left=root->right;
root->right=tmp;
invertTree(root->left);
invertTree(root->right);
}
return root;
}
但是,为什么我们不能简单地做:
TreeNode* invertTree(TreeNode* root) {
if(root!=NULL)
{
TreeNode* tmp = (root->left);
root->left=root->right;
root->right=tmp;
}
return root;
}
切换子树的父节点不会同时切换其子节点吗?
【问题讨论】:
-
您应该在使用调试器逐步完成时绘制树。
-
我做了,但我认为它也会切换子节点,而不仅仅是选定的节点。
标签: c++ recursion binary-tree