二叉樹 判斷相同二叉搜尋樹

2021-08-13 21:11:31 字數 1164 閱讀 8919

給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。

方法:

為每個序列建樹,並利用每棵樹的中序遍歷判斷相同

**:

#include #include #include typedef struct bstree *bst,bstree;

bst insert_tree(bst root, int key)

else

else if (root -> data < key)

return root;

}}int order1[20];

int order2[20];

int num = 0;

int num1 = 0;

void pre_tree_fir(bst root)

pre_tree_fir(root -> left);

pre_tree_fir(root -> right);

order1[num++] = root -> data;

return ;

}void pre_tree_sec(bst root)

pre_tree_sec(root -> left);

pre_tree_sec(root -> right);

order2[num1++] = root -> data;

return ;

}int main()

scanf("%d",&l);

bst root = null, root1 = null;

num = 0;

num1 = 0;

for (i = 0; i < n; i++)

pre_tree_fir(root);

while(l --)

pre_tree_sec(root1);

int flag = 1;

for (i = 0; i <= n; i++)

}if (flag)

else }}

return 0;

}

二叉樹 還原二叉樹 二叉搜尋樹

先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...

判斷二叉樹是否為二叉搜尋樹

剛開始我想的很簡單,覺得只要遞迴判斷左孩子是否小於根節點 右孩子是否大於根節點就行了 二叉搜尋樹 左孩子 根結點 右孩子 根節點 下面的寫法 錯的!錯的!二叉樹的判斷應該是左子樹的最大值 小於 根節點 右子樹的最小值大於根節點 bool isvalidbst treenode root if roo...