二叉樹 前序、中序、後序
一.基本概念
每個節點最多有2棵子樹,左子樹和右子樹,次序不可顛倒性質: 1.非空二叉樹的第n層上至多有2^(n-1)個元素 2.深度為h的二叉樹至多有2^h - 1個節點
滿二叉樹
:所有終端都在同一層次,且非中斷結點的度數為2。
在滿二叉樹中若其深度為h,則包括所包含的結點樹必為2^h - 1
完全二叉樹
:除了最大的層次即成為一顆滿二叉樹,且層次最大那層的所有結點均向左靠齊,即集中在左面的位置上,不能有空位置。
對於完全二叉樹,設一個結點為i,則其父結點為i/2, 2i為左子節點,2i + 1為右子節點
二.儲存結構
順序儲存:將資料結構存在一塊固定的陣列中
`
define LENGTH 100
typedef char datatype;
typedef struct node{
datatype data;
int lchild,rchild;
int parent;
}Node;
Node tree[LENGTH];
int length;
int root;
`
雖然在遍歷速度上有一定的優勢,但因所佔空間比較大,是非主流二叉樹,二叉樹通常以鏈式儲存
鏈式儲存:
`
typedef char datatype;
typedef struct BinNode{
datatype data;
struct BinNode *lchild;
struct BinNode *rchild;
}BinNode;
typedef BinNode *bintree;
`
三.二叉樹的遍歷
遍歷即將所有結點訪問且僅訪問一次,按照根結點的位置不同分為前序遍歷,中序遍歷,後序遍歷:前序遍歷: 根結點-> 左子結點 - >右子結點 中序遍歷:左子結點 - > 根結點 ->右子結點 後序遍歷: 左子結點 - >右子結點 - > 根結點
e.g.:
前序遍歷:abdefgc 中序遍歷:debgfac 後序遍歷: edfgbca
相關文章
- 【二叉樹】前中序求後序,中後序求前序二叉樹
- 二叉樹 ---- 前序 中序 後序 知二求一二叉樹
- 二叉樹的前序、中序、後序三種遍歷二叉樹
- 二叉樹的前序,中序,後序遍歷方法總結二叉樹
- 二叉樹的前序、中序、後序的遞迴和迭代實現二叉樹遞迴
- 二叉樹建立,前序遍歷,中序遍歷,後序遍歷 思路二叉樹
- 二叉樹的建立、前序遍歷、中序遍歷、後序遍歷二叉樹
- 從前序與中序構造二叉樹二叉樹
- 二叉樹迭代器(中序遞迴、前序和後序遍歷)演算法二叉樹遞迴演算法
- 還原二叉樹(先序+中序-〉後序)二叉樹
- 刷題筆記:樹的前序、中序、後序遍歷筆記
- 後序+中序(前序+中序)重構樹,嚴格O(N)演算法演算法
- 【樹01】對二叉樹前序/中序/後序遍歷演算法的一些思考二叉樹演算法
- 二叉樹前序、中序、後序遍歷相互求法(code留著看,概念先看了)二叉樹
- (樹)根據中序後序構建二叉樹二叉樹
- 【資料結構與演算法】二叉樹的 Morris 遍歷(前序、中序、後序)資料結構演算法二叉樹
- 二叉樹先知道後序和中序,求先序二叉樹
- 二叉樹中序和後序遍歷表示式二叉樹
- 二叉樹的四種遍歷方法:先序,中序,後序,層序二叉樹
- 資料結構與演算法——二叉樹的前序遍歷,中序遍歷,後序遍歷資料結構演算法二叉樹
- 889. 根據前序和後序遍歷構造二叉樹二叉樹
- 先序、中序、後序序列的二叉樹構造演算法二叉樹演算法
- 已知二叉樹的先序和後序求任意一中序二叉樹
- 根據二叉樹的先序序列和中序序列還原二叉樹並列印後序序列二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- 演算法 -- 實現二叉樹先序,中序和後序遍歷演算法二叉樹
- LintCode 前序遍歷和中序遍歷樹構造二叉樹二叉樹
- 從中序與後序遍歷序列構造二叉樹二叉樹
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- 遞迴和迭代實現二叉樹先序、中序、後序和層序遍歷遞迴二叉樹
- 二叉樹--後序遍歷二叉樹
- 二叉樹的先,中,後序遍歷二叉樹
- 二叉樹的先中後序遍歷二叉樹
- 二叉樹的前中後序遍歷二叉樹
- 非遞迴遍歷二叉樹的四種策略-先序、中序、後序和層序遞迴二叉樹
- 【劍指offer】【4】根據前序和中序結果,重建二叉樹二叉樹
- 資料結構實驗之二叉樹八:(中序後序)求二叉樹的深度資料結構二叉樹
- Leetcode 889. 根據前序和後序遍歷構造二叉樹LeetCode二叉樹