二叉树采用链接存储方式存储,分别编写一个二叉树先序遍历的递归算法和非递归算法,用c语言举例实现
时间: 2023-05-11 18:04:46 浏览: 103
c语言实现二叉树的前中后序遍历 递归和非递归 数据结构
4星 · 用户满意度95%
递归算法:
```
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
```
非递归算法:
```
void preorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
stack<TreeNode*> s;
s.push(root);
while (!s.empty()) {
TreeNode* node = s.top();
s.pop();
printf("%d ", node->val);
if (node->right != NULL) {
s.push(node->right);
}
if (node->left != NULL) {
s.push(node->left);
}
}
}
```
其中,TreeNode 是二叉树节点的结构体,包含 val、left、right 三个成员变量。
阅读全文