關於二叉樹的其他演算法以及樹二叉樹森林的轉化

2021-09-29 12:13:28 字數 880 閱讀 6457

求二叉樹結點的數目:

void count(binode *root)

}

樹中結點的數目等於左子樹結點的數目加上右子樹結點的數目加1

templateint bitree::count(binode* root)
葉子節點的數目

增加乙個leafcount的資料成員

templatevoid bitree:: countleaf(bitreenode* root)

} return;

}

樹中葉子節點的數目等於左子樹中葉子節點的數目+右子樹中葉子節點的數目。

templateint bitree::leafcount(binode* root)
樹的高度

templateint bitree::cal_height(bitreenode* root)
樹和二叉樹之間的對應關係

1:兄弟加線

2:保留雙親與第乙個孩子連線,刪去與其他孩子的連線

3:順時針轉動,使之層次分明。

森林轉化為二叉樹

1:將森林中的每棵樹轉換成二叉樹;

2:從第二棵二叉樹開始,依次把後一棵二叉樹的根結點作為前一棵二叉樹根結點的右孩子,當所有二叉樹連起來後,此時所得到的二叉樹就是由森林轉換得到的二叉樹。

二叉樹轉化為樹或森林

1:加線——若某結點x是其雙親y的左孩子,則把結點x的右孩子、右孩子的右孩子、……,都與結點y用線連起來;

2:去線——刪去原二叉樹中所有的雙親結點與右孩子結點的連線;

3: 層次調整——整理由⑴、⑵兩步所得到的樹或森林,使之層次分明。

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

樹以及二叉樹

樹是一種非線性的資料結構,它是由n n 0 個有限結點組成乙個具有層次關係的集合.把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝下,而葉朝上的.每個結點有零個或多個子節點 沒有父節點的結點稱為根節點 每個非根節點有且只有乙個父節點 除了根節點外,每個子節點可以分為多個不相交的子樹 節點的度...