实现先序线索二叉树上的先序遍历 递归算法
时间: 2023-12-29 17:51:33 浏览: 78
实现先序线索二叉树的先序遍历递归算法可以按照以下步骤:
1. 如果当前结点的左孩子不为 NULL,递归遍历当前结点的左孩子。
2. 访问当前结点。
3. 如果当前结点的右孩子不为 NULL,递归遍历当前结点的右孩子。
需要注意的是,由于是线索二叉树,遍历时需要判断当前结点是否有左线索或右线索,如果有的话,需要按照线索指向的结点进行遍历。
此处给出一个示例代码:
```c++
void preOrderThreadedTree(TreeNode *root) {
TreeNode *p = root;
while (p) {
if (p->leftChildThread == false) {
p = p->leftChild;
} else {
visit(p);
if (p->rightChildThread == false) p = p->rightChild;
else {
// 找到该结点的后继结点
while (p && p->rightChildThread) {
p = p->rightChild;
visit(p);
}
p = p->rightChild;
}
}
}
}
```
其中,TreeNode 表示线索二叉树的结点,leftChild 和 rightChild 分别表示左孩子和右孩子,leftChildThread 和 rightChildThread 分别表示左线索和右线索。visit函数用于访问结点(即输出结点的值)。
阅读全文