1编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值(写出算法思想)

2025-01-08 06:39:02
推荐回答(1个)
回答1:

使用先序遍历二叉树的算法即可解决,只需要修改输出结点值的方法即可。
输出方法修改为计数方式,计数到第K次输出是才进行真实输出即可,例如:
bool print(TreeNode *node, int &curTime, int k )
{
curTime++;
if (curTime == k)
{
printf("%c", node->value);
return true;
}
return false;
}
//起始curTime的值为0
bool FirstTraversalTree(TreeNode *root, int &curTime, int k)
{
if (root == NULL)
return false;
if (print(root, curTime, k))
return true;
if (FirstTraversalTree(root->left, curTime, k) || FirstTraversalTree(root->right, curTime,k))
return true;
return false;
}