1.查找數,2.查找最小數(遞歸方法),3.查找最大數(迭代方法) 4.知道如何插入一個數,就知道如何創建一個排序二叉樹廢話不多說上函數代碼 x是要插入的數,root是對應待插入的樹,5.如何刪除一個數。
ST *find(int x, ST *root)/*查找x這個數*/{ while(root) { if(x > root->data) root = root->rt; else if(x < root->data) root = root->lt; else return root; } return 0;}ST *minfind(ST *root)/*遞歸方法*/{ if(!root) return NULL; else if(!root->lt) return root; else midfind(root->lt);}ST *maxfind(ST *root)/*迭代的方法*/{ if(root) { while(root->rt) { root = root->rt; } } return root;}ST *insert(int x, ST *root){ if(root == NULL) { root = (ST *)malloc(sizeof(ST)); root->data = x; root->lt = NULL; root->rt = NULL; } else { if(x > root->data) root->rt = insert(x, root->rt); else root->lt = insert(x, root->lt); } return root;}ST *delete(int x, ST *root){ ST *p; if(root) { if(x > root->data) { root->rt = delete(x, root->rt); } else if(x < root->data) { root->lt = delete(x, root->lt); } else { if(root->lt && root->rt) { p = minfind(root-rt); root->data = p->data; root->rt = delete(root->data, root->rt); } else { p = root; if(!root->lt) root = root->rt; else if(!root->rt) root = root->lt; free(p); } } }}新聞熱點
疑難解答