数据结构 && ACM :比较两棵树是否相等。

题目:

有如下数据结构:

typedef struct TreeNode{
	char c;
	TreeNode *leftChild;
	TreeNode *rightChild;
};

现在实现函数:int CompTree(TreeNode *tree1, TreeNode *tree2);

比较两棵树是否相等

代码:

typedef struct TreeNode{
	char c;
	TreeNode *leftChild;
	TreeNode *rightChild;
};

//两棵树相等的话返回1,否则返回0
int CompTree(TreeNode *tree1, TreeNode * tree2) {
	bool isTree1NULL = (tree1 == NULL);
	bool isTree2NULL = (tree2 == NULL);
	//如果两个树都是空的话
	if (isTree1NULL && isTree2NULL) return 1;
	//如果一棵树是空,而另外一棵树非空的话
	if (isTree1NULL != isTree2NULL) return 0;
	//如果两棵树都是非空的话
	if (tree1 ->c != tree2 ->c) return 0;
	return (CompTree(tree1->left, tree2->left) & CompTree(tree1->right, tree2->right)) |
		(CompTree(tree1->left, tree2->right) & CompTree(tree1->right, tree2->left));
}
时间: 2024-10-19 05:06:09

数据结构 && ACM :比较两棵树是否相等。的相关文章

【LeetCode-面试算法经典-Java实现】【100-Same Tree(两棵树是否相同)】

[100-Same Tree(两棵树是否相同)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. 题目大

LeetCode——Same Tree(判断两棵树是否相同)

问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value.   分析: 考虑使用深度优先遍历的方法,同时遍历两棵树,遇到不等的就返回. 代码如下: /** * Definition f

两棵树,你砍哪一棵?

老教授问:“如果你去山上砍树,正好面前有两棵树,一棵粗,另一棵细,你会砍哪一棵?” 问题一出,大家都说:“当然砍那棵粗的了.” 老教授一笑,说:“那棵粗的不过是一棵普通的杨树,而那棵细的却是红松,现在你们会砍哪一棵?” 我们一想,红松比较珍贵,就说:“当然砍红松了,杨树又不值钱!” 老教授带着不变的微笑看着我们,问:“那如果杨树是笔直的,而红松却七歪八扭,你们会砍哪一棵?” 我们觉得有些疑惑,就说:“如果这样的话,还是砍杨树.红松弯弯曲曲的,什么都做不了!” 老教授目光闪烁着,我们猜想他又要加条

element ui改写实现两棵树

使用element ui组件库实现一个table的两棵树的效果 效果如下,左边树自动展开一级,右边树默认显示楼层,然后可以一个个展开 代码如下 <el-table :data="relativeData" :fit="isFit" height="700px" :row-style="showTr" :row-class-name="tableRowClassName" :header-row-cla

[51nod1325]两棵树的问题

description 题面 solution 点分治+最小割. 点分必选的重心,再在树上dfs判交,转化为最大权闭合子图. 可以做\(k\)棵树的情况. code #include<iostream> #include<cstdlib> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #defin

用递归方法判断两棵树是否相等

#include<iostream> #include<vector> #include<stack> #include<string> #include<queue> #include<algorithm> #include<numeric> using namespace std; class node{ public: int val; node* left; node* right; node():val(0),l

【数据结构】赫夫曼树的实现和模拟压缩(C++)

赫夫曼(Huffman)树,由发明它的人物命名,又称最优树,是一类带权路径最短的二叉树,主要用于数据压缩传输. 赫夫曼树的构造过程相对比较简单,要理解赫夫曼数,要先了解赫夫曼编码. 对一组出现频率不同的字符进行01编码,如果设计等长的编码方法,不会出现混淆的方法,根据规定长度的编码进行翻译,有且只有一个字符与之对应.比如设计两位编码的方法,A,B,C,D字符可以用00-11来表示,接收方只要依次取两位编码进行翻译就可以得出原数据,但如果原数据只由n个A组成的,那发出的编码就是2n个0组成,这样的

hdu-3015 Disharmony Trees---离散化+两个树状数组

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3015 题目大意: 有一些树,这些树的高度和位置给出.现在高度和位置都按从小到大排序,对应一个新的rank,任意两棵树的值为min(高度的rank) * abs(位置差的绝对值).问所有任意两棵树的值的和是多少. 解题思路: 按照题意离散化,然后对H从大到小排序,这样可以保证前面的树高度都比当前的高(或者相等).在计算的时候就可以使用当前的H. 和POJ-1990类似 1 #include<iost

LeetCode:Same Tree - 判断两颗树是否相等

1.题目名称 Same Tree(判断两棵树是否相等) 2.题目地址 https://leetcode.com/problems/same-tree/ 3.题目内容 英文:Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes h