题目:判断一个节点是否在一棵二叉树中
结点定义如下
struct BinaryTree
{
BinaryTree(char data)
:_pLeft(NULL)
, _pRight(NULL)
, _data(data)
{}
BinaryTree *_pLeft;
BinaryTree *_pRight;
char _data;
};
首先附上创建树代码
void CreateBinaryTree(BinaryTree *&pRoot, char *str,size_t size, size_t &index)
{
if (index < size && str[index] != '#')
{
pRoot = new BinaryTree(str[index]);
CreateBinaryTree(pRoot->_pLeft, str, size, ++index);
CreateBinaryTree(pRoot->_pRight, str, size, ++index);
}
}
思路:判断当前结点与查找的结点是否相等,如果不相等寻找左子树,继而寻找右子树,这样用递归很容易实现
- 代码实现
bool IsNodeInTree(BinaryTree *pRoot,BinaryTre