先序構建二叉樹_preorder
【題目描述】:
樹的括號表示法:
先將根結點放入一對圓括號中,然後把它的子樹按由左而右的順序放入括號中,而對子樹也採用同樣方法處理:同層子樹與它的根結點用一對圓括號括起來。例如下圖可寫成如下形式
【輸入描述】:
輸入只有乙個字串,用括號表示法表示的一顆二叉樹。
【輸出描述】:
輸出以後一行,這棵樹的中序遍歷結果(每個整數間用空格隔開)
【樣例輸入1】
(1(2(4)())(3(6)()))
【樣例輸出1】
4 2 1 6 3
【樣例輸入2】
(3(10(7(4()(5))(1))(6))(9()(8()(2))))
【樣例輸出2】
4 5 7 1 10 6 3 9 8 2
【資料範圍及描述】:
二叉樹結點個數不超過5*104
記憶體使用不超過10mb
用陣列模擬鍊錶,還是比較好寫的
#include
#include
using
namespace
std;
struct nodea[50010];
char s[500010];
void creat_tree(int &x, int &i)
if(s[x] == '(' && s[x+1] == ')')x+=2;
else
if(s[x] == '(')
if(s[x] == '(' && s[x+1] == ')')x+=2;
else
if(s[x] == '(')
if(s[x] == ')') x++;
}void dfs(int x)
int main()
先序構建二叉樹及先序遍歷二叉樹
先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...
先序構建二叉樹及先序遍歷二叉樹
先序為dlr d 根節點,l 左子樹,r 右子樹 a b c d e 先序序列為abdce,輸入為abd c e 表示空格,代表空樹 輸入按滿二叉樹輸入 每乙個節點都是乙個子樹的根節點 void pre create tree treenode t else else void pre visit ...
先中序構建二叉樹
資料結構學到二叉樹了。覺得有點難了。大家都知道,先序 中序或者中序 後序才能確定一棵二叉樹。這次用的是先序和中序構建二叉樹,再用層序遍歷輸出。先序 7 10 4 3 1 2 8 11 中序 4 10 3 1 7 11 8 2 那麼層序就是 7 10 2 4 3 8 1 11 struct binar...