南郵資料結構實驗2 2 二叉樹遍歷的一些應用

2021-08-20 07:20:15 字數 1935 閱讀 8552

題目:以實驗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,其中,表示空結點 請建立二叉樹並按中序和後序的方...