之前的資料結構都是一對一的線性結構,而樹是一對多的資料結構
樹是有n個結點的有限集,n=0時稱為空樹
在任何一棵非空樹中,有且僅有乙個特定的稱為根的結點
當n>1時,其餘結點可分為m個互不相交的有限集,其中每乙個集合本身又是一棵樹,並且稱為根的子樹,如下圖
樹的定義其實就是之前提到的棧的遞迴的方法,就是樹的定義的之後還用到了樹
如下圖,子樹t1和子樹t2就是結點a的子樹,d/g/h/i組成的樹又是b為結點的子樹,e/j組成的樹是c為結點的子樹
樹的定義中有兩點需要注意:
1.n>0的時候根結點是唯一的,不可能存在多個根結點
2.m>0時,子樹的個數沒有限制,但他們一定是互不相交的
下邊的兩個結構就不符合樹的定義,因為有相交的子樹:
結點的子樹的根稱為該結點的(child),對應,該結點稱為孩子的(parent)
同乙個雙親的孩子之間互稱兄弟(sibling)
結點的祖先是從根到該結點所經分支上的所有結點
所以下圖中,對於h來說,d,b,a都是他的祖先,反之,以某結點為根的子樹中的任一結點都稱為該結點的子孫,b的 子孫有d,g,h,i
對比線性表和樹的結構,他們有很大的不同
和執行緒表的差別還是很大的
大話資料結構C語言 25 什麼是二叉樹?
電視上經常有猜 的的遊戲,比較高效的方法是折半查詢演算法 假設是100以內的數字,則一定能在7次以內猜出來 類似上述的問題,都是用樹結構來建模,這種樹是一種特殊的樹狀結構,叫做二叉樹 二叉樹是n n 0 個結點的有限集合,該集合或者為空集 稱為空二叉樹 或者由乙個根結點和兩顆互不相交的,分別稱為根結...
大話資料結構之樹
看了一下大話資料結構的樹原始碼對應基礎差的東西還是不太友好,這邊寫了一篇簡單的。個人觀點 例如 上面這一棵樹寫個簡單關於樹的 實際樹的運用還是圍繞二叉樹和紅黑樹展開 include pch.h include include struct node typedef node bitnode type...
資料結構 什麼是資料結構?
緒論 其實,資料結構在計算機科學界至今沒有標準的定義。個人根據各自的理解的不同而有不同的表述方法 資料結構是資料物件,以及存在於該物件的例項合組成例項的資料元素之間的各種聯絡。這些聯絡可以通過定義相關的函式來給出。他將資料物件 data object 定義為 乙個資料物件是例項或值的集合 其實,究竟...