我测试了以下C ++代码。似乎根本没有改变。但是,根本不应该将func从3节点更改为节点5?
void func(BSTreeNode* root){
root=root->right;
}
int main(int argc, const char * argv[]) {
BSTreeNode* root=new BSTreeNode(3);
root->right=new BSTreeNode(5);
func(root);
cout<<root->val;
return 0;
}
此外,我一直想知道
之间有什么区别TreeNode root=NULL;
和
TreeNode root;
它是第一个实际分配新内存而第二个没有?
答案 0 :(得分:0)
您的函数func
更新了一个局部变量。未在main中声明的root
变量上重新选择赋值。
在第一种情况下,root被初始化为null。在第二种情况下,root未初始化并指向某些未知内存,可能无效。