好久沒冒過泡。。。
這次複習數據結構,搞個二叉排序樹
code:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <stdexcept>
#include<algorithm>
#include<stack>
#include<queue>
#include<functional>
struct BinaryNode {
BinaryNode*lchild;
BinaryNode*rchild;
int data;
}BinaryTree[110];
int idx;
BinaryNode*init()
{
BinaryTree[idx].lchild = BinaryTree[idx].rchild = NULL;
return &BinaryTree[idx++];
}
void binaryPostOrder(BinaryNode*T)
{
if (T->lchild != NULL)
binaryPostOrder(T->lchild);
if (T->rchild != NULL)
binaryPostOrder(T->rchild);
printf("%d ", T->data);
}
// 中序遍歷
void binaryMidOrder(BinaryNode*T)
{
if (T->lchild != NULL)
binaryMidOrder(T->lchild);
printf("%d ", T->data);
if (T->rchild != NULL)
binaryMidOrder(T->rchild);
}
// 前序遍歷
void binaryPreOrder(BinaryNode*T)
{
printf("%d ", T->data);
if (T->lchild != NULL)
binaryPreOrder(T->lchild);
if (T->rchild != NULL)
binaryPreOrder(T->rchild);
}
BinaryNode*insert(BinaryNode*T, int x)
{
if (T == NULL)
{
T = init();
T->data = x;
return T;
}
else if (T->data > x)
T->lchild = insert(T->lchild, x);
else if (T->data < x)
T->rchild = insert(T->rchild, x);
return T;
}
void binaryTree()
{
int n;
while (scanf_s("%d", &n) != EOF)
{
if (n == 0)
break;
idx = 0;
BinaryNode*root = NULL;
for (int i = 0; i < n; i++)
{
int x;
scanf_s("%d", &x);
root = insert(root, x);
}
binaryPreOrder(root);
printf("\n");
binaryMidOrder(root);
printf("\n");
binaryPostOrder(root);
printf("\n");
}
}
int main(void)
{
binaryTree();
system("pause");
return 0;
}