一、首先这个问题是判断二叉树的结构是否相同,所以这就和二叉树的数据的值无关。只需要判断结构;判断两个二叉树的结构是否相同很简单。
采用递归的思想:
(1)如果两棵二叉树都为空,返回真
(2)如果两棵二叉树一棵为空,另一棵不为空,返回假
(3)如果两棵二叉树都不为空,则递归判断其对应的左子树和右子树结构是否相同,如果都相同返回真,其他返回假
二、代码实现
#include<iostream>
using namespace std;
#include<assert.h>
template<class T>
struct TreeNode
{
TreeNode( const T& data=T())
:_data(data)
,_left(NULL)
,_right(NULL)
{}
int _data;
TreeNode<T>* _left;
TreeNode<T>* _right;
};
template<class T>
class BinaryTree
{
typedef TreeNode<T> Node;
public:
BinaryTree()//无参构造函数
:_root(NULL)
{}
BinaryTree(const T* arr,int sz,con