每日一題(九) 二叉搜尋樹

2021-09-10 07:17:55 字數 1542 閱讀 7690

要求:

輸入: 

判斷兩序列是否為同一二叉搜尋樹序列 input開始乙個數n(1<=n<=20) ,表示有n個需要判斷,n= 0 的時候輸入結束。 

接下去一行是乙個序列,序列長度小於10,包含(0~9)的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。 

接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組成同一顆二叉搜尋樹。

輸出: 

如果序列相同則輸出yes,否則輸出no

sample input 

2567432 

543267 

576342 

0sample output 

yes 

no

#include#includestruct nodetree[110];

int loc;

node *creat()

char str1[25], str2[25]; //儲存二叉排序樹的遍歷結果,

//將每一棵樹的前序遍歷得到的字串與中序遍歷得到的字串連線

//得到遍歷結果字串

int size1, size2; //儲存在字元陣列中的遍歷得到字元個數

char *str; //當前正在儲存字串

int *size; //當前正在儲存字串中的個數

void postorder(node *t)

void inorder(node *t)

void preorder(node *t)

node *insert(node *t, int x)

else if (x < t->c) //若x小於根結點數值

t->lchild = insert(t->lchild, x);//插入到左子樹上

else if (x > t->c)

t->rchild = insert(t->rchild, x);

return t;

}int main()

size1 = 0; //儲存在第乙個字串中的字元初始化為0

str = str1; //將正在儲存字串設定為第乙個字串

size = &size1;

preorder(t);

inorder(t);

str1[size1] = 0; //向第乙個字串的最後乙個字元新增空字元,方便使用字串函式

while (n-- != 0)

size2 = 0;

str = str2;

size = &size2;

preorder(t2);

inorder(t2);

str2[size2] = 0;

puts(strcmp(str1, str2) == 0 ? "yes" : "no");

} }return 0;

}

每日一題 98 驗證二叉搜尋樹

今天是2020年5月5日,星期二,時隔好幾天沒有在寫每日一題,因為五一期間自己也有一些事情,最近還生病打點滴。給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 輸入 2 1 3 輸出 true 示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸入為 5,1...

Leetcode 每日一題 恢復二叉搜尋樹

level hard 題目 二叉搜尋樹中的兩個節點被錯誤地交換。請在不改變其結構的情況下,恢復這棵樹。示例 高階 使用 o n 空間複雜度的解法很容易實現。你能想出乙個只使用常數空間的解決方案嗎?思路 要充分利用二叉搜尋樹的特性。二叉搜尋樹的中序遍歷得到的序列是遞增。假設遞增序列 a 1,2,3,4...

每日一題(七) 二叉樹遍歷

二叉樹的前序 中序 後序遍歷的定義 前序遍歷 對任一子樹,先訪問根,然後遍歷其左子樹,最後遍歷其右子樹 中序遍歷 對任一子樹,先遍歷其左子樹,然後訪問根,最後遍歷其右子樹 後序遍歷 對任一子樹,先遍歷其左子樹,然後遍歷其右子樹,最後訪問根。題目 給定一棵二叉樹的前序和中序遍歷,求其後續遍歷。樣例輸入...