二叉树迭代查找函数代码C语言
时间: 2024-10-18 21:21:12 浏览: 24
【数据结构与算法】二叉树的实现C语言代码
在C语言中,我们可以使用递归或栈来实现二叉树的迭代查找。这里我提供一个简单的非递归版本,即使用栈实现深度优先搜索(DFS),假设我们有一个二叉树结构如下:
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
TreeNode* searchBST(TreeNode* root, int target) {
stack<TreeNode*> s;
TreeNode* current = root;
// 初始化栈并开始遍历
s.push(root);
while (!s.empty()) {
current = s.top();
s.pop();
if (current->val == target) {
return current;
}
if (target < current->val && current->left != NULL) {
s.push(current->left);
}
else if (target > current->val && current->right != NULL) {
s.push(current->right);
}
}
// 如果没找到目标节点,返回NULL
return NULL;
}
```
这个函数`searchBST`会将根节点压入栈中,然后进入循环,每次从栈顶取出节点,检查其值是否为目标值。如果小于目标值,就将其左孩子压入栈;如果大于目标值,就将其右孩子压入栈。当找到目标值或栈为空时,说明遍历结束。
阅读全文