您的位置:首页 > 其它

判断一个节点是否在一棵二叉树中

2017-08-24 00:12 246 查看
#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>

using namespace std;
//结点
template <typename T>
struct TreeNode
{
T _data;
TreeNode *_left;
TreeNode *_right;
TreeNode(const T& data)
:_data(data)
,_left(NULL)
,_right(NULL)
{}
};

//创建二叉树
template<typename T>
void CreateBinaryTree(TreeNode<T>*& root, char*& str)
{
if (*str != '#' && *str != '\0')
{
root = new TreeNode<T>(*str);
CreateBinaryTree(root->_left, ++str);
CreateBinaryTree(root->_right, ++str);
}
}
//判断结点是否在一颗二叉树中
template <typename T>
bool IsNodeOfTree(const TreeNode<T>* root, const TreeNode<T>* node)
{
if (NULL==root || NULL==node)
return false;
if (root == node) //如果是要判断是否有相同的值 改成  if(root->_data == node->_data);
return true;
return(IsNodeOfTree(root->_left, node) || IsNodeOfTree(root->_right, node));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树
相关文章推荐