思路:递归地查找一棵树是否包含该节点,如果包含,则保存。
bool foundPath(BTNode *root,BTNode *target,list<BTNode *>&path){
if(root==NULL)
return false;
if(root==target)
{ return true; }
//bool found = false;
if(foundPath(root->left) || foundPath(root->right))
path.push_back(root);
}
同样利用此方法,可以求出某节点的所在的层次
bool foundDepth(BTNode *root,BTNode *target,int *depth){
if(root==NULL)
return false;
if(root==target)
{
*depth = 0;
return true;
}
//bool found = false;
if(foundPath(root->left) || foundPath(root->right))
*depth = *depth+1;
}
但上面找层的方法存在重复的遍历树上的节点,一种可行的方法可以采取层次遍历,如果遍历到目标节点,返回当前层号。今天先写到这里了,之后补充