先序输出第i个结点
时间: 2023-07-18 20:06:12 浏览: 36
如果是二叉树的先序遍历,可以使用递归的方式实现。先输出当前结点的值,然后先序遍历左子树,最后先序遍历右子树。具体实现如下:
```
void preOrder(TreeNode* root, int& i) {
if (root == nullptr) return;
cout << root->val << " "; // 输出当前结点的值
if (++i == target) return; // 如果已输出第i个结点,则直接返回
preOrder(root->left, i); // 先序遍历左子树
if (++i == target) return; // 如果已输出第i个结点,则直接返回
preOrder(root->right, i); // 先序遍历右子树
}
// 主函数调用
int target = i; // 要输出的结点编号
int count = 0; // 计数器,记录已输出的结点数
preOrder(root, count);
```
其中,`i` 表示要输出的结点编号,`count` 表示已输出的结点数。在递归过程中,如果已经输出了第 `i` 个结点,则直接返回,不再继续遍历。
相关问题
void PrintNode(BiTree T)用这个函数名写一个先序输出第i个结点递归
以下是用函数名 PrintNode 实现先序输出第 i 个结点递归的代码:
```
void PrintNode(BiTree T, int i, int &count) {
if (T) {
count++;
if (count == i) {
printf("%c ", T->data);
return;
}
PrintNode(T->lchild, i, count);
PrintNode(T->rchild, i, count);
}
}
```
其中,BiTree 是二叉树的结构体类型,count 是用来记录当前遍历到的结点序号的变量。在调用 PrintNode 函数时,需要传入二叉树的根节点 T,要输出的结点序号 i,以及计数器变量 count 的地址 &count。在函数内部,先将计数器 count 加 1,表示当前遍历到了一个结点。如果计数器 count 等于要输出的结点序号 i,就输出该结点的数据,并直接返回。否则,继续递归遍历该结点的左右子树。
void PrintNode(BiTree T)用这个函数名写一个先序输出第i个结点
这里给出一个示例代码,其中使用了一个全局计数器变量 count 来记录当前是第几个节点:
```
int count = 1; // 全局计数器
void PrintNode(BiTree T, int i) {
if (T == NULL) {
return;
}
if (count == i) { // 如果当前节点是第 i 个节点,则输出该节点的值
printf("%c\n", T->data);
return;
}
count++; // 继续遍历左子树
PrintNode(T->lchild, i);
count++; // 继续遍历右子树
PrintNode(T->rchild, i);
}
```
调用方式:
```
PrintNode(T, i); // T 为二叉树的根节点指针,i 为要输出的节点的序号
```
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)