2020.11.11问题 B: DS二叉树--同一棵二叉树?
2021/11/11 23:10:07
本文主要是介绍2020.11.11问题 B: DS二叉树--同一棵二叉树?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
二叉树分别以数组存储方式创建、以先序遍历序列创建。输入二叉树的数组存储、先序遍历结果,判断根据它们创建的二叉树是否是同一棵二叉树。
输入
测试次数t
每组测试数据两行:
第一行:二叉树的数组存储(英文字母表示树结点,#表示空树)
第二行:二叉树的先序遍历结果(英文字母表示树结点,#表示空树)
输出
对每组测试数据,如果两种方式创建的是同一棵二叉树,输出YES,否则,输出NO。
样例输入
3 ABCDE ABD##E##C## ABC##DE####W##F AB##CDW###E#F## abc##d ab##c#d样例输出
YES YES NO#include<iostream> #include<string> #include<queue> using namespace std; class BiTreeNode { public: char data; BiTreeNode* leftChild; BiTreeNode* RightChild; BiTreeNode() :leftChild(NULL), RightChild(NULL) {} ~BiTreeNode() {} }; class BiTree { private: BiTreeNode* Root; int pos; string strTree, Tree; BiTreeNode* CreateBiTree(); void Compare();//内部Compare函数 public: BiTree() {}; ~BiTree() {}; void CreateTree(string TreeArray); void Input(string _Tree);//数组存储二叉树输出 }; void BiTree::CreateTree(string TreeArray) {//函数用于创建二叉树并于数组存储进行比较 pos = 0; strTree.assign(TreeArray); Root = CreateBiTree(); Compare(); } BiTreeNode* BiTree::CreateBiTree() { BiTreeNode* T; char ch; ch = strTree[pos++]; while(ch){ if (ch == '#'){ T = new BiTreeNode(); T->data='#'; T->leftChild=NULL; T->RightChild=NULL; } else { T = new BiTreeNode(); T->data = ch; T->leftChild = CreateBiTree(); T->RightChild = CreateBiTree(); } return T; } } void BiTree::Compare(){ int i = 0; BiTreeNode* p; queue<BiTreeNode*> Q; Q.push(Root); while (i < Tree.length()) { p = Q.front(); Q.pop(); if (p) { if (p->data != Tree[i]) { cout << "NO" << endl; return;//不匹配则结束函数 } Q.push(p->leftChild);//左子树入队 Q.push(p->RightChild);//右子树入队 }i++; } cout << "YES" << endl;//循环完则说明匹配 } void BiTree::Input(string _Tree) { Tree = _Tree; } int main() { int t, i; cin >> t; for (i = 0; i < t; i++) { string s1, s2; cin >> s1 >> s2; BiTree* T = new BiTree(); T->Input(s1); T->CreateTree(s2); } return 0; }
这篇关于2020.11.11问题 B: DS二叉树--同一棵二叉树?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?
- 2024-12-23汽车4S店运营效率提升的核心工具