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