判断一颗二叉树是是否是另一颗树的子树。
2017-08-07 19:02
225 查看
什么样的情况下,某一棵树会成为另一棵树的子数呢?子树的根节点是某一棵树的某个节点,接下来的子节点也相同,则该树是另一棵树的子集。
首先找到与根节点相同的节点,在进行遍历,可使用递归法。
首先找到与根节点相同的节点,在进行遍历,可使用递归法。
template<class T> struct TreeNode { T _data; TreeNode<T>* _left; TreeNode<T>* _right; TreeNode(T x = T()) :_data(x) , _left(NULL) , _right(NULL) {} }; template<class T> bool Check(TreeNode<T>* root1, TreeNode<T>* root2) { if (root1 == NULL && root2 == NULL)//都可以走到尾节点,那自然是一直相同 return true; if (root1 == NULL || root2 == NULL)//只有其中一个走到底,则对比后,至少一个节点不相同 return false; if (root1->_data != root2->_data) return false; return Check(root1->_left, root2->_left) && Check(root1->_right, root2->_right); } template<class T> bool IsSubset(TreeNode<T>* root1, TreeNode<T>* root2) { if (root1 == NULL) return false; if (root1->_data == root2->_data) { if (Check(root1, root2)) { return true; } } return IsSubset(root1->_left, root2) || IsSubset(root1->_right, root2); }
相关文章推荐
- 判断一颗二叉树是是否是另一颗树的子树。
- 判断一颗二叉树是是否是另一颗树的子树
- 判断一颗二叉树是否是另一颗树的子树
- 判断一颗二叉树是是否是另一颗树的子树
- 判断一个节点是否在一棵二叉树中和判断一颗二叉树是否是另一颗树的子树——题集(十二)
- 判断一颗二叉树是是否是另一颗树的子树。比如tree2是tree1的子树
- day14之判断一个节点是否在一棵二叉树中+判断一颗二叉树是是否是另一颗树的子树
- 判断一个节点是否在一棵二叉树中&判断一颗二叉树是是否是另一颗树的子树
- 百度笔试题:判断一个二叉树是否是另一颗二叉树的子树
- 二叉树--判断一颗二叉树是是否是另一颗树的子树。比如tree2是tree1的子树。
- 【判断一个节点是否在一棵二叉树中】/【判断一颗二叉树是是否是另一颗树的子树】
- 判断一个节点是否在一棵二叉树中&&判断一颗二叉树是是否是另一颗树的子树
- 判断一颗二叉树是否对称
- 判断一棵二叉树是否是另一棵树的子树
- 判断一颗二叉树是否为平衡二叉树(AVL)
- 判断一颗二叉树是否是平衡二叉树
- 二叉树:判断二叉树是否另一棵二叉树的子树
- 判断是否是同一颗二叉树
- 判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像——题集十