c++11 - 检查两棵树是否具有相同的结构
问题描述
只传递 BST 类型的对象而不是 Node 类型的对象,这里的逻辑是错误的,我需要一些帮助,它总是返回 false
bool BST<T>::similarStructure(BST<T>& Tree2) {
if (isEmpty()) {
cout << "tree is empty\n";
return;
}
StackArray<node<T>> *s1, *s2; // s1 for traversal,, s2 for printing
s1->Push(root);
s2->Push(tree2.root);
while (!s1.IsEmpty() &&!s2.isempty()) {
node<T> n = s1->Pop();
node<T> n1=s2->Pop();
if (n->right != NULL && n1->right!=NULL){
s1.Push(n->right);
s2.Push(n1->right); }
else{
return false;}
if (n->left != NULL && n->left!=NULL){
s1.Push(n->left);
s2.Push(n1->left);}
else{
return false;}
}
return true;
}
解决方案
以最简单的情况为例,lhs 树和 rhs 树都只有一个节点。
在 while 循环中,当遇到第一个条件表达式if (n->right != NULL && n1->right!=NULL)
, sincen->right == NULL
时,该表达式的值为 false,因此该函数返回 false。
推荐阅读
- java - 是否有任何类处理 RecyclerView ViewHolders 的数据绑定?
- html - 当固定宽度扩展以适应其内容时,相同宽度的其他 s 也会按比例扩展(使用 CSS)
- sql - 如何为新的服务器版本恢复数据库文件
- python - 为什么我的 For 循环乘以每个字符串
- sql-server - 使用条件格式填充文本框时,SSRS 出现错误。错误 BC30201
- webpack - Object.entries/Object.values 在 IE 11 中未使用 Babel-polyfill 定义
- python - python3 + pygit:“没有名为‘repository’的模块”
- javascript - 防止可穿戴手腕手势关闭屏幕
- elixir - 即使 2019b 已发布,ets.lookup 仍在从 2019a tzdata 文件返回 :tzdata_current_release, :release_version 的旧数据
- vba - 查找文档中是否存在数组中的任何样式