1 第一種思路是比較容易想到的,就是直接根據輸入的資料建立二叉搜尋樹,然後像判斷兩棵樹是否同構那樣,先判斷根節點是否相同,然後再遞迴的判斷左子樹,右子樹。
2 第二種思路是不建樹,直接根據輸入的序列使用遞迴的思想去解決。
3 第三種思路是建一棵樹,再判斷其他序列是否與該樹一致。
#define _crt_secure_no_warnings
#include #include #include struct treenode
;struct treenode* newnode(int v)
struct treenode* insert(struct treenode* t,int v)
else
else
}return t;
}struct treenode* maketree(int n)
return t;
}int check(struct treenode* t,int v)
else if (v > t->data)
else
}else
else
}}int judge(struct treenode* t,int n)
else
for (i = 1;i < n;i++) }
if(flag)
else }
void reset(struct treenode* t)
if (t->right)
t->flag = 0;
}void freetree(struct treenode* t)
if (t->right)
free(t);
}int main()
else
reset(t);
} freetree(t);
scanf("%d", &n);
} // system("pause");
return 0;
}
是否同一棵二叉搜尋樹
5 4 是否同一棵二叉搜尋樹 25分 給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入包含若干組測試資料。每...
是否同一棵二叉搜尋樹
04 樹4 是否同一棵二叉搜尋樹 25 分 給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入格式 輸入包含若...
是否同一棵二叉搜尋樹
給定乙個插入序列就可以唯一確定一棵二叉搜尋樹。然而,一棵給定的二叉搜尋樹卻可以由多種不同的插入序列得到。例如分別按照序列和插入初始為空的二叉搜尋樹,都得到一樣的結果。於是對於輸入的各種插入序列,你需要判斷它們是否能生成一樣的二叉搜尋樹。輸入格式 輸入包含若干組測試資料。每組資料的第1行給出兩個正整數...