我是在二叉樹程序的差異,這個節目曾是什麼在這兩個程序
#include <iostream>
using namespace std;
struct node{
int data;
node *left;
node *right;
};
void insert(node **rootnode , int value) {
node* newnode = *rootnode;
if (newnode == NULL) {
newnode = new node;
newnode->left = NULL;
newnode->right = NULL;
newnode->data = value;
*rootnode = newnode; // this was missing!
}
else if (value < newnode->data){
insert(&newnode->left , value);
}
else if (value > newnode->data ){
insert (&newnode->right , value);
}
}
void inorder (node *root){
if (root == NULL){
return;
}
else{
inorder(root->left);
cout << root->data << endl;
inorder(root->right);
}
}
int main(){
node* root = NULL;
insert (&root , 4);
insert (&root , 5);
insert (&root , 2);
insert(&root , 10);
insert(&root , 1);
//cout << root->data << endl;
inorder(root);
}
現在我試圖讓這個不經過根節點的參考...但它不工作。 ..我沒能找到爲什麼..
#include <iostream>
using namespace std;
struct node{
int data;
node *left;
node *right;
};
void insert(node *rootnode , int value) {
node* newnode = rootnode;
if (newnode == NULL) {
newnode = new node;
newnode->left = NULL;
newnode->right = NULL;
newnode->data = value;
rootnode = newnode; // this was missing!
}
else if (value < newnode->data){
insert(newnode->left , value);
}
else if (value > newnode->data ){
insert (newnode->right , value);
}
}
void inorder (node *root){
if (root == NULL){
return;
}
else{
inorder(root->left);
cout << root->data << endl;
inorder(root->right);
}
}
int main(){
node* root = NULL;
insert (root , 4);
insert (root , 5);
insert (root , 2);
insert(root , 10);
insert(root , 1);
//cout << root->data << endl;
inorder(root);
}
第二種方案只是給了空輸出...我認爲根節點沒有更新..但我don'nt知道爲什麼....
這聽起來像你可能需要學習如何使用一個調試器來遍歷你的代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。深入閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver