代码拉取完成,页面将自动刷新
//
// Created by littlebear on 2022/5/11.
//
#include <iostream>
#include <queue>
#define DATA_TYPE char
using namespace std;
struct BinTreeNode {
DATA_TYPE value;
BinTreeNode *left;
BinTreeNode *right;
};
typedef struct BinTreeNode *PBinTreeNode;
typedef struct BinTreeNode *BinTree;
typedef BinTree *PBinTree;
PBinTreeNode getTree(PBinTree t) {
return *t;
}
PBinTreeNode getLeftTree(PBinTreeNode p) {
return p->left;
}
PBinTreeNode getRightTree(PBinTreeNode p) {
return p->right;
}
PBinTreeNode createRest_BTree() {
PBinTreeNode pbnode;
char ch;
scanf("%c", &ch);
if (ch == '@') pbnode = nullptr;
else {
pbnode = (PBinTreeNode) malloc(sizeof(struct BinTreeNode));
if (pbnode == nullptr) {
printf("Out of space!\n");
return pbnode;
}
pbnode->value = ch;
pbnode->left = createRest_BTree();
pbnode->right = createRest_BTree();
}
return pbnode;
}
PBinTree create_BTree() {
PBinTree pbtree = (PBinTree) malloc(sizeof(BinTree));
if (pbtree != nullptr)
*pbtree = createRest_BTree();
return pbtree;
}
void visit(BinTreeNode *p) {
cout << p->value << " ";
}
void preOrder(BinTreeNode *p) {
if (p != nullptr) {
visit(p);
preOrder(p->left);
preOrder(p->right);
}
}
void inOrder(BinTreeNode *p) {
if (p != nullptr) {
inOrder(p->left);
visit(p);
inOrder(p->right);
}
}
void postOrder(BinTreeNode *p) {
if (p != nullptr) {
postOrder(p->left);
postOrder(p->right);
visit(p);
}
}
void levelOrder(BinTreeNode *p) {
if (p != nullptr) {
queue<BinTreeNode *> q;
q.push(p);
while (!q.empty()) {
BinTreeNode *node = q.front();
q.pop();
visit(node);
if (node->left != nullptr) q.push(node->left);
if (node->right != nullptr) q.push(node->right);
}
}
}
int main() {
PBinTree tree = create_BTree();
//ABDF@@@E@G@@C@IJ@@K@@
printf("PreOrder: ");
preOrder(*tree);
printf("\nInOrder: ");
inOrder(*tree);
printf("\nPostOrder: ");
postOrder(*tree);
printf("\nLevelOrder: ");
levelOrder(*tree);
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。