基于二叉链表的二叉树的双序遍历
#include<iostream>
using namespace std;
typedef struct TreeNode {
char val;
TreeNode* left;
TreeNode* right;
TreeNode() :val('0'), left(nullptr), right(nullptr) {
}
TreeNode(char x) :val(x), left(nullptr), right(nullptr) {
}
}TreeNode,*BiTree;
BiTree PreInsert() {
char x;
cin >> x;
if (x == '0') return nullptr;
TreeNode* root = new TreeNode(x);
root->left = PreInsert();
root->right = PreInsert();
return root;
}
void TwoOrder(BiTree T) {
if (T == nullptr) return;
cout << T->val;
TwoOrder(T->left);
cout << T->val;
TwoOrder(T->right);
}
int main() {
BiTree T;
while (true) {
T = PreInsert();
if (T == nullptr) break;
TwoOrder(T);
cout << endl;
}
return 0;
}