1 昨天因為關鍵字,折騰一天,為何定義的結構體總是說沒有這個定義,原來問題出現在沒有用關鍵字typedef,這個關鍵字通俗點說就是別名的意思,可用用定義的別名來定義其他的變量或函數,當需要改變這個別名類型的時候,只要修改typedef定義就可以做到一改全改的目的,不用一個個去改變類型了。
2 今天因為在函數內部申請的內存,回到原函數是,申請的內存已經被釋放了,百思不得其解,終於看到C++的偉大之處,使用引用&操作符,可以解決這個問題,Mark一下。
二叉查找樹代碼
#includeusing namespace std; typedef int elemType; typedef struct biNode { struct biNode *parent,*left,*right; elemType key; }*biTree; int insertNode(biTree & root,elemType key) { biTree x,y=NULL; biTree z=new biNode; z->key=key; z->parent=z->right=z->left=NULL; x=root; while (x!=NULL) { y=x; if (z->key key) x=x->left; else x=x->right; } z->parent=y; if (y==NULL) root=z; else if (z->key key) y->left=z; else y->right=z; return 0; } biTree treeSearch(biTree & root,elemType k) { if (root==NULL||k==root->key) return root; if (k key) return treeSearch(root->left,k); else return treeSearch(root->right,k); } biTree minNode(biTree root) { biTree x=root; while (x->left==NULL) x=x->left; return x; } biTree successorNode(biTree root) { biTree x=root; biTree y; if (x->right!=NULL) return minNode(x->right); y=x->parent; while (y!=NULL&&x==y->right) { x=y; y=y->parent; } return y; } biTree delNode(biTree & root,elemType k) { biTree x=NULL,y=NULL; biTree z=treeSearch(root,k); if (z->left==NULL||z->right==NULL) { y=z; } else y=successorNode(z); if (y->left==NULL) { x=y->left; } else x=y->right; if (x!=NULL) { x->parent=y->parent; } if (y->parent==NULL) { root=x; } else if (y=y->parent->left) { y->parent->left=x; } else y->parent->right=x; if (y!=z) { z->key=y->key; } return y; } void InorderTreeWalk(biTree & root) { if (root!=NULL) { InorderTreeWalk(root->left); cout< key<<"-->"; InorderTreeWalk(root->right); } } int main() { biTree root=NULL; int num; cin>>num; for (int i=0;i >temp; insertNode(root,temp); } InorderTreeWalk(root); if (treeSearch(root,10)->key==10) { cout<<"succeed!"<