#include<iostream>
#include<stack>
using namespace std;
struct treeNode {
int val;
treeNode* left;
treeNode* right;
treeNode(int k) :val(k), left(nullptr), right(nullptr) {};
};
void preOrder(treeNode* root) { //先序遍历
stack<treeNode*>temp;
treeNode *p = root;
while (p != nullptr || !temp.empty()) {
while (p != nullptr) {
cout << p->val << " ";
temp.push(p);
p = p->left;
}
if (!temp.empty()) {
p = temp.top();
temp.pop();
p = p->right;
}
}
}
void midOrder(treeNode* root) { //中序遍历
stack<treeNode*>temp;
treeNode *p = root;
while (p != nullptr || !temp.empty()) {
while (p != nullptr) {
temp.push(p);
p = p->left;
}
if (!temp.empty()) {
p = temp.top();
cout << p->val << " ";
temp.pop();
p = p->right;
}
}
}
树的非递归遍历
最新推荐文章于 2024-06-03 17:15:00 发布