初學二叉樹,感覺之前鍊錶掌握不熟練導致接受有點難,現在做一些總結。
本題其實就是根據給出的前序遍歷(包括空子樹),寫出相應的前序、中序和後序遍歷。
廢話不多說,先看看題目:
description
下面給出了教材中演算法6.4所示的演算法。
status createbitree ( bitree &t )
return ok;
}
該演算法按照給出的先序序列順序建立二叉樹的二叉鍊錶。要求實現該演算法。
input
包含多組測試資料。每組測試資料一行,給出二叉樹的先序遍歷序列(至少1個結點)。
output
輸出二叉樹的先序,中序和後序遍歷結果。
sample input
abc ^ ^ de ^ g ^ ^ f ^ ^ ^
a ^ ^
ab ^ ^ c ^ ^
sample output
abcdegf
cbegdfa
cgefdbaaa
aabc
bacbca
————————————————————————————————————————
首先講講各種遍歷方法:(這裡只講遞迴,並不講用棧的方式)
**為
typedef
struct node
tree;
void
preorder
(tree*
&t)}
**如下:(之後省略樹的結構體**)
void
inorder
(tree*
&t)}
**如下:
void
postorder
(tree*
&t)}
思路: 模擬一遍前序遍歷,然後賦相應的值,^ 則賦 null,不是 ^ 則賦該值給data域*,構建二叉樹
#include
using namespace std;
char c[
1001];
int tot;
typedef
struct node
tree;
void
create
(tree*
&t)//根據前序構建二叉樹
}void
preorder
(tree*
&t)//前序遍歷
}void
inorder
(tree*
&t)//中序遍歷
}void
postorder
(tree*
&t)//後序遍歷
}int
main()
return0;
}
其實這道題終歸來講,還是需要熟悉二叉樹的各種遍歷方式,其他的也都迎刃而解了. 二叉樹的遍歷 二叉樹遍歷與儲存
在資料結構中,二叉樹是非常重要的結構。例如 資料庫中經常用到b 樹結構。那麼資料庫是如何去單個查詢或者範圍查詢?首先得理解二叉樹的幾種遍歷順序 先序 中序 後序 層次遍歷。先序 根節點 左子樹 右子樹 中序 左子樹 根節點 右子樹 後序 左子樹 右子樹 根節點 按層級 class node if c...
二叉樹建立 遍歷
include include include include using namespace std typedef struct node char ch struct node lchild,rchild bitnode,bitree int treenum 0 總結點數 void creat...
二叉樹建立與遍歷
二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱為 左子樹 和 右子樹 二叉樹的每個節點最多只能右兩棵子樹,子樹有左右之分,次序不能顛倒。除了葉結點外每乙個結點都有左右子葉且葉子結點都處在最底層的二叉樹。假設二叉樹的高度為k,除第k層外,其他各層的節點數都達到最大個數。也就是第一層到第k 1層為...