先序構建二叉樹 preorder

2021-07-10 15:07:32 字數 1041 閱讀 9899

先序構建二叉樹_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...