時間限制: 1 sec 記憶體限制: 125 mb
提交: 57 解決: 46
我們可以把由「0」和「1」組成的字串分為三類:全「0」串稱為b串,全「1」串稱為i串,既含「0」又含「1」的串則稱為f串。
fbi樹是一種二叉樹(如下圖),它的結點型別也包括f結點,b結點和i結點三種。由乙個長度為2n的「01」串s可以構造出一棵fbi樹t,遞迴的構造方法如下:
1) t的根結點為r,其型別與串s的型別相同;
2) 若串s的長度大於1,將串s從中間分開,分為等長的左右子串s1和s2;由左子串s1構造r的左子樹t1,由右子串s2構造r的右子樹t2。
現在給定乙個長度為2n的「01」串,請用上述構造方法構造出一棵fbi樹,並輸出它的後序遍歷序列。
每組輸入資料的第一行是乙個整數n(0<=n<=10),第二行是乙個長度為2n的「01」串。
資料規模:
對於40%的資料,n<=2;
對於全部的資料,n<=10。
每組輸出包括一行,這一行只包含乙個字串,即fbi樹的後序遍歷序列。
310001011
ibfbbbfibfiiiff
#includeusingposted on 2019-04-26 13:48namespace
std;
intn;
string
b; int a[10000
];//
i=1,b=0,f=2
void
out(int
root)
else
if(root==1
)
else
//cout
int print(int l,int
r)
else
};if((l+r)/2>=l)
else
if(xl==1&&xr==1
)
else
//out(root);
return
root;
}return0;
}int
main()
int root=print(1
,len);
out(root);
return0;
}
收藏時間限制: 1 sec 記憶體限制: 125 mb
提交: 57 解決: 46
我們可以把由「0」和「1」組成的字串分為三類:全「0」串稱為b串,全「1」串稱為i串,既含「0」又含「1」的串則稱為f串。
fbi樹是一種二叉樹(如下圖),它的結點型別也包括f結點,b結點和i結點三種。由乙個長度為2n的「01」串s可以構造出一棵fbi樹t,遞迴的構造方法如下:
1) t的根結點為r,其型別與串s的型別相同;
2) 若串s的長度大於1,將串s從中間分開,分為等長的左右子串s1和s2;由左子串s1構造r的左子樹t1,由右子串s2構造r的右子樹t2。
現在給定乙個長度為2n的「01」串,請用上述構造方法構造出一棵fbi樹,並輸出它的後序遍歷序列。
每組輸入資料的第一行是乙個整數n(0<=n<=10),第二行是乙個長度為2n的「01」串。
資料規模:
對於40%的資料,n<=2;
對於全部的資料,n<=10。
每組輸出包括一行,這一行只包含乙個字串,即fbi樹的後序遍歷序列。
310001011
ibfbbbfibfiiiff
#includeusingnamespace
std;
intn;
string
b; int a[10000
];//
i=1,b=0,f=2
void
out(int
root)
else
if(root==1
)
else
//cout
int print(int l,int
r)
else
};if((l+r)/2>=l)
else
if(xl==1&&xr==1
)
else
//out(root);
return
root;
}return0;
}int
main()
int root=print(1
,len);
out(root);
return0;
}
FBI樹 字元二叉樹
小記 花了好長時間,這道題主要是考二叉樹的後序遍歷,是個模板,但是不同於一般的根據陣列插入數字構造二叉樹,本題中的二叉樹結點資料是字元,並且是根據字串算出來了。postorder 函式就是原版的後序遍歷函式不需要修改的,不同的是newnode 需要稍加修改,通過呼叫函式tp 來計算當前節點的data...
資料結構 樹,二叉樹
樹 1 樹是n n 0 個有限個資料的元素集合,形狀像一顆倒過來的樹。2 節點 結點包含資料和指向其它節點的指標。3 根節點 樹第乙個結點稱為根節點。4 結點的度 結點擁有的子節點個數。5 葉節點 沒有子節點的節點 度為0 6 父子節點 乙個節點father指向另乙個節點child,則child為孩...
資料結構 二叉樹 反轉二叉樹
include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...