題目:以實驗2.1的二叉鍊錶為儲存結構,編寫程式實現求二叉樹結點個數、葉子結點個數、二叉樹的高度以及交換二叉樹所有左右子樹的操作。
部分**:
求二叉樹結點個數:
//求二叉樹結點個數
int size(binarytreenode *t)
求二叉樹葉子結點個數:
//求二叉樹葉子結點個數
int leaf(binarytreenode *t)
求二叉樹的高度:
//求二叉樹的高度
int depth(binarytreenode *t)
交換二叉樹:
//交換二叉樹
void exch(binarytreenode *t)
}
完整程式:
#include#include#includeusing namespace std;
typedef char t;
typedef struct binarytreenodebinarytreenode;
//先序遍歷構建二叉樹
binarytreenode *precreatebt(binarytreenode *t)
else
return t;
}//先序遍歷
void preordertransverse(binarytreenode *t)
printf("%c",t->data); //列印輸出根結點,此處可以定義其他操作
preordertransverse(t->lchild); //然後先序遍歷左子樹
preordertransverse(t->rchild); //最後先序遍歷右子樹
}//中序遍歷
void inordertransverse(binarytreenode *t)
inordertransverse(t->lchild); //中序遍歷根結點的左子樹
printf("%c",t->data); //列印輸出根結點,此處可以定義其他操作
inordertransverse(t->rchild); //最後中序遍歷根結點的右子樹
}//後序遍歷
void postordertransverse(binarytreenode *t)
postordertransverse(t->lchild); //後序遍歷根結點的左子樹
postordertransverse(t->rchild); //然後後序遍歷根結點的右子樹
printf("%c",t->data); //最後列印輸出根結點,此處可以定義其他操作
}//求二叉樹結點個數
int size(binarytreenode *t)
//求二叉樹葉子結點個數
int leaf(binarytreenode *t)
//求二叉樹的高度
int depth(binarytreenode *t)
//交換二叉樹
void exch(binarytreenode *t)
}int main()
實驗結果:輸入abeh###c#d##mn###,分別計算結點數、葉子結點數、高度,然後進行二叉樹交換,再分別先序、中序、後序遍歷。
南郵資料結構實驗6 1二叉樹的基本操作
1.在二叉鍊錶上實現二叉樹運算 1 設計遞迴演算法,實現下列二叉樹元算 刪除一顆二叉樹,求一顆二叉樹的高度,求一棵二叉樹中葉子結點數,複製一棵二叉樹,交換一棵二叉樹的左右子樹。includeusing namespace std templatestruct btnode btnode const ...
mysql 遍歷二叉樹 資料結構 二叉樹遍歷
這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...
資料結構 遍歷二叉樹
資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...