第5章 樹和二叉樹 9

2021-06-03 13:15:27 字數 1826 閱讀 9829

習題 5.9 編寫演算法,求二叉樹中分支結點的數目。

c++ codes:

templateclass treenode

};templateclass tree

int countbranchnode()

private:

int countbranchnodemethod(treenode*root)

};

int main()

{ treenode*node1=new treenode(0,0,1);

treenode*node2=new treenode(0,0,2);

treenode*node3=new treenode(node1,node2,3);

treenode*node4=new treenode(0,0,4);

treenode*node5=new treenode(0,0,5);

treenode*node6=new treenode(node3,node4,6);

treenode*node7=new treenode(node5,node6,7);

treenode*node8=new treenode(0,0,8);

treenode*node9=new treenode(0,0,9);

treenode*node10=new treenode(node8,node9,10);

treenode*node11=new treenode(node10,0,11);

treenode*node12=new treenode(node7,node11,12);

tree*tree=new tree(node12);

coutclass treenode:

def __init__(self,left=0,right=0,value=0):

self.left=left

self.right=right

self.value=value

class tree:

def __init__(self,root):

self.root=root

def countbranchnode(self):

return self.__countbranchnode(self.root)

def __countbranchnode(self,root):

if root==0:

return 0

if root.left==0 and root.right==0:

return 0

else:

return 1+self.__countbranchnode(root.left)+self.__countbranchnode(root.right)

from tree import tree,treenode

node1=treenode(value=1)

node2=treenode(node1,0,2)

node3=treenode(value=3)

node4=treenode(value=4)

node5=treenode(node3,node4,5)

node6=treenode(node2,node5,6)

node7=treenode(node6,0,7)

node8=treenode(value=8)

root=treenode(node7,node8,10)

tree=tree(root)

print tree.countbranchnode()

第5章 樹和二叉樹

1.樹是一類重要的非線性資料結構,樹形結構是以分支關係來定義的層次結構。在客觀世界中樹形結構廣泛存在,並應用於 人類社會的族譜 家譜 行政區域劃分管理 各種社會組織機構 在計算機領域中,用樹表示源程式的語法結構 在作業系統 os 中,檔案系統 目錄等組織結構也是用樹來表示的。本章的主要內容是 樹的邏...

第5章 樹和二叉樹

線性結構的資料元素是一對一的關係。非線性結構 樹形結構和圖狀結構。樹形結構是一對多的非線性結構,資料元素之間既有分支關係,又有層次關係。樹形結構由樹和二叉樹兩種,樹的操作實現比較複雜,但樹可以轉換為二叉樹進行處理。5.1樹 5.1.1樹的定義 樹 tree 是n個相同型別的資料元素的有限集合。樹中的...

第5章 樹和二叉樹 1

樹形結構是一對多的非線性結構,非常類似於自然界中的樹,資料元素之間既有分支關係,又有層次關係。樹形結構有樹和二叉樹兩種,樹的操作實現比較複雜,但樹可以轉換為二叉樹進行處理。二叉樹的儲存結構主要有三種 順序儲存結構 二叉鍊錶儲存結構和三叉鍊錶儲存結構。採用順序儲存結構,是對非線性資料結構線性化,用線性...