最近重新温习数据结构,自己编写了一个关于二叉树的代码,分享下。
#include#include using namespace std;typedef struct TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild;}TreeNode;int cmpTree(TreeNode *tree1, TreeNode *tree2){ bool isTree1_Null = (tree1 == NULL); bool isTree2_Null = (tree2 == NULL); if(isTree1_Null != isTree2_Null) return 0; if(isTree1_Null && isTree2_Null) return 1; if(tree1->c != tree2->c) return 0; return (cmpTree(tree1->leftchild, tree2->leftchild) & cmpTree(tree1->rightchild, tree2->rightchild)) | (cmpTree(tree1->rightchild, tree2->leftchild) & cmpTree(tree1->leftchild, tree2->rightchild));}TreeNode *creat(int i){ TreeNode *root; char c; if(i == 0) cout<<"Please input the element of root: "; else if(i == 1) cout<<"Please input the element of leftchild: "; else cout<<"Please input the element of rightchile: "; cin>>c; if(c == '#') { cout<<"Input stop"< c = c; root->leftchild = creat(1); root->rightchild = creat(2); } return root;}int main(){ TreeNode *tree1, *tree2; int i = 0; tree1 = creat(0); tree2 = creat(0); i = cmpTree(tree1, tree2); if(i == 1) cout<<"Equal"<