1.分別建立兩棵二叉搜尋樹
建立:
tree initial(intn)
else
root =t[root].left;
}else
else
root =t[root].right;}}
}return
t;}
非遞迴:用兩個佇列來層序遍歷,若遇到不相同的元素就不相同
voidcompare(tree t1, tree t2)
*/if(t1[number1].num!=t2[number2].num)
if (t1[number1].left !=null)
in(q1, t1[number1].left);
if (t1[number1].right !=null)
in(q1, t1[number1].right);
if (t2[number2].left !=null)
in(q2, t2[number2].left);
if (t2[number2].right !=null)
in(q2, t2[number2].right);
}printf(
"yes\n");
return
;}
遞迴:根相同,遞迴比較左右子樹
int compare(tree t1, tree t2,int root1,introot2)
else
return0;
}
2.建立一棵樹,再判別其他序列是否與該樹一致
思路:樹結點多乙個flag域,第一棵樹建立起來後,在樹上搜尋要判定序列中的每乙個結點,如果搜尋經過的結點有未出現的結點,則一定不是同一棵樹。因為如果遇到了未出現的結點,則該結點一定插在這裡的,而不是後面才插進來。
是否同一棵二叉搜尋樹
5 4 是否同一棵二叉搜尋樹 25分 給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入包含若干組測試資料。每...
是否同一棵二叉搜尋樹
04 樹4 是否同一棵二叉搜尋樹 25 分 給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入格式 輸入包含若...
是否同一棵二叉搜尋樹
給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入格式 輸入包含若干組測試資料。每組資料的第1行給出兩個正整數...