題目描述
編乙個程式,讀入使用者輸入的一串先序遍歷字串,根據此字串建立乙個二叉樹(以指標方式儲存)。 例如如下的先序遍歷字串: abc##de#g##f### 其中「#」表示的是空格,空格字元代表空樹。建立起此二叉樹以後,再對二叉樹進行中序遍歷,輸出遍歷結果。
輸入描述:
輸入包括1行字串,長度不超過100。
輸出描述:
可能有多組測試資料,對於每組資料,
輸出將輸入字串建立二叉樹後中序遍歷的序列,每個字元後面都有乙個空格。
每個輸出結果佔一行。
示例1
輸入就是根據前序字串建立二叉樹,然後再中序遍歷。關鍵在建立,新建樹的bitnode型別,然後遞迴建樹abc##de#g##f###
輸出 c b e g d f a
#include
#include
#include
#include
#include
char tree[105];
using
namespace
std;
typedef
struct node bitnode;
int len = 0;
int pos = 0;
bitnode* createtree()
else
}void inorder(bitnode*t)
}int main()
}
前序遍歷:
void preorder(bitnode * t)
}
後序遍歷
void postorder(bitnode * t)
}
以廣義表的形式輸出二叉樹:
void printbintree(bitnode * t)
}}
計算一顆二叉樹的高度
int height(bitnode * t)
}
一些性質:
1、二叉樹的第i層,最多有2^i-1個結點
2、深度為k的二叉樹最少有k個結點,最多有2^k-1個結點
3、具有n個結點的完全二叉樹的深度為log2(n+1)
4、結點i所在層次為log2i+1
二叉樹建立和遍歷
二叉樹建立遍歷規則 1.先序 根 左 右 2.中序 左 根 右 3.後序 左 右 根 二叉樹定義和輔助函式如下 struct node void visit int data int indata 先序建立二叉樹 struct node createbitree 先序建立乙個二叉樹 return t...
二叉樹建立和遍歷
include include 帶返回值建立二叉樹 最簡單方法 節點資料結構 struct bs node typedef struct bs node tree tree head,p,root 建立二元查詢樹 有返回值的可以不傳參 沒有的話如何傳參 輸入0代表到了某個葉子節點 tree crea...
二叉樹建立和遍歷
二叉樹建立遍歷規則 1.先序 根 左 右 2.中序 左 根 右 3.後序 左 右 根 二叉樹定義和輔助函式例如以下 struct node void visit int data int indata 先序建立二叉樹 struct node createbitree 先序建立乙個二叉樹 return...