若二叉樹為空,返回null;
若二叉樹只有乙個結點,直接刪除;
否則遞迴左右子樹。
void del(bitnode *&t)
else
}
設max是預先設定的最大值,初始值為0,判斷是否有比其更大的值並修改。
void maxvalue(bitnode *t,datatype &max)
maxvalue(t->lchild,max);
maxvalue(t->rchild,max);
}}
由於遞迴語句中,由函式引數表返回最大值,故max為引用型引數。
先對左子樹和右子樹進行遞迴調換,最後交換根的左右子女
void exchange(bitnode *t)
設前序序列pre[s1,…,t2],中序序列in[s2,…,t2],初始時s1=s2=0,t1=t2=n;以pre[s1]建立根節點,搜尋in[s1]=pre[s1]的位置i,把中序序列分為in[s2,…i-1]和in[i+1,…t2]兩個子串行,再遞迴構造左右子樹。
void createbitree(bitnode *t,datatype pre, datatype in, int s1,int s2,int t1,int t2)
與由前序序列和中序序列構造二叉樹類似,不過根結點為post[t1],即後序序列的最後一位
void createbitree(bitnode *t,datatype post, datatype in, int s1,int s2,int t1,int t2)
加入計數器count,在訪問的同時記錄結點序號
bitnode* pre_find_k(bitnode t,int &count,int k)
else return null;
}
二叉樹的應用 二叉樹遍歷的應用
在以上討論的遍歷演算法中,訪問結點的資料域資訊,即操作visite bt data 具有更一般的意義,需根據具體問題,對bt 資料進行不同的操作。下面介紹幾個遍歷操作的典型應用。search bt,x 在bt 為二叉樹的根結點指標的二叉樹中查詢資料元素x。查詢成功時返回該結點的指標 查詢失敗時返回空...
二叉樹及其應用 二叉樹遍歷
給定二叉樹的廣義表表示,構造二叉樹並輸出二叉樹的四種遍歷順序。輸入說明 輸入僅一行,該行僅由 以及大小寫字元構成的二叉樹的廣義表表示,字串長度不超過100。輸出說明 在接下來的四行中依行輸出二叉樹的四種遍歷 輸入樣列 a b d,c e,f h 輸出樣列 abdcefh dbaecfh dbehfc...
二叉樹遍歷的應用
二叉樹遍歷的應用。求二叉樹結點個數 int size binarytreenode t 求二叉樹葉子結點個數 int leaf binarytreenode t 求二叉樹的高度 int depth binarytreenode t 交換二叉樹 void exch binarytreenode t 求...