兩個字串,其長度n均小於等於26。
第一行為前序遍歷,第二行為中序遍歷。
二叉樹中的結點名稱以大寫字母表示:a,b,c....最多26個結點。
輸入樣例可能有多組,對於每組測試樣例,
輸出一行,為後序遍歷的字串。
使用tree陣列靜態node節點的思路值得學習。
使用字元陣列char str儲存字串,字串結尾是0
string和scanf的接收需要c_str()轉化
scanf和gets函式最好不用混用!
**如下:
#include#includeusing namespace std;
struct node
tree[50];
//注意,這裡使用了tree陣列儲存葉節點,很不錯
char str1[50];
char str2[50];
int loc;
node* create()
//後序遍歷是左兒子->右兒子->根
//遞迴訪問
void postorder(node *t)
if(t->rchild!=null)
printf("%c",t->ch);
}/*這個build函式是此題解的核心
通過先後查詢前序序列和中序序列,不斷縮小範圍確定子樹,思想核心是build的四個引數s1e1s2e2。
分別代表前序便利中當前子樹的起始終止節點
並且是遞迴的構造二叉樹 先給根節點賦名字char,確定左右子樹在前序和中序序列中的範圍,再遞迴構建左兒子和右兒子
*/node*build(int s1,int e1,int s2,int e2)
}//並且這裡判斷左右子樹是否終止也很重要 這是遞迴建樹的終止條件
if(rootidx!=s2)
if(rootidx!=e2)
return ret;
}int main()
return 0;
}
二叉樹的遍歷 二叉樹遍歷與儲存
在資料結構中,二叉樹是非常重要的結構。例如 資料庫中經常用到b 樹結構。那麼資料庫是如何去單個查詢或者範圍查詢?首先得理解二叉樹的幾種遍歷順序 先序 中序 後序 層次遍歷。先序 根節點 左子樹 右子樹 中序 左子樹 根節點 右子樹 後序 左子樹 右子樹 根節點 按層級 class node if c...
構建二叉樹 遍歷二叉樹
陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...
玩轉二叉樹(二叉樹的遍歷)
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 ...