樹是乙個非常重要的非線性資料結構。簡單來說他是根據資料關係講資料元素按分支結構連線起來的。其中,a為根,b為子數,一層層擴散開來,因為非常像自然界中的大樹,所以稱為樹。
在資料庫系統中,樹型結構也是資訊的重要組織形式之一。一切具有層次關係的問題都可用樹來描述。這次我介紹一下二叉樹
在電腦科學中,二叉樹是每個結點最多有兩個子樹的有序樹。通常子樹的根被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用作二叉查詢樹和二叉堆或是二叉排序樹。
二叉樹有如下特點:
每個結點最多有兩顆子樹,結點的度最大為2
左子樹和右子樹是有順序的,次序不能顛倒
即使某結點只有乙個子樹,也要區分左右子樹。
所以說,二叉樹有五種基本形態:
· 二叉樹為空集的空二叉樹
·根和空的左右子樹
·根和左子樹
·根和右子樹
·根和左右字子樹
定義:高度為h,並且由2h-1個結點組成的二叉樹,稱為滿二叉樹。
**定義:**一棵二叉樹中,只有最下面兩層結點的度可以小於2,並且最下層的葉結點集中在靠左的若干位置上,這樣的二叉樹稱為完全二叉樹。
因此,滿二叉樹必須是完全二叉樹,反過來不一定成立。
訪問根結點的操作發生在遍歷其左右子樹之前。
輸出順序為:根左右;
按圖一為:abcdegf
訪問根結點的操作發生在遍歷其左右子樹之中(間)。
輸出順序為:左根右
按圖一輸出為:cbegbfa
訪問根結點的操作發生在遍歷其左右子樹之後。
輸出順序為:左右根
按圖一輸出為:cgefdba
二叉樹學習筆記 概述
陣列 向量 鍊錶都是一種順序容器,它們提供了按位置訪問資料的手段。而非常多情況下,我們須要按資料的值來訪問元素,而不是它們的位置來訪問元素。比方有這樣乙個陣列int num 3 我們能夠非常高速的訪問陣列中下標為2的資料,也就是說我們知道這個資料的位置。就能夠高速訪問。有時候我們是不知道元素的位置。...
學習筆記 樹 二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。本題主要採用遞迴的思想。首先介紹一下根據前序遍歷和中序遍歷來構建二叉樹的思路 前序遍歷的第乙個則是二叉樹的根,找到根在中序遍歷中的位...
二叉樹學習筆記
二叉樹是樹的一種特殊結構,也是一種極為重要的樹,二叉樹最重要的操作是遍歷,即按照一定的順序訪問樹中的所有節點,常見的遍歷方式有 對遍歷來說,最容易想到的方式就是遞迴,遞迴 簡單,但是效率不高,需要的棧空間比較大,非遞迴的方法 較為複雜,不過效率較高。遞迴實現 void preordervisit b...