-3
我測試了下面的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;
是它的區別的第一個真正具有新的內存分配第二個不是?
參數在C中按值傳遞。在函數中更改變量不會影響調用者的變量。 – Barmar
'func'改變一個局部變量。調用者不可見此更改。它實際上是一個空操作 - 它完全等同於'void func(BSTreeNode * root){ –
至於你的第二個問題 - 很難在不知道'TreeNode'實際是什麼的情況下精確地回答。 –