c语言 二叉树的创建及其递归与非递归算法
标签:nbsp style class oid tree 非递归 else 结果 malloc
以下包含有前后序的递归和非递归算法
#include
#include#define MAXSIZE 20
typedef struct node{
int data;
struct node* right;
struct node* left;
}Node;
typedef struct{
Node *root;
}Tree;
void insert(Tree *tree,int value)
{
Node *node=(Node *)malloc(sizeof(Node));
node->data=value;
node->left=NULL;
node->right=NULL;
if(tree->root==NULL)
tree->root=node;
else
{
Node *temp=tree->root;
while(temp!=NULL)
{
if(valuedata)
{
if(temp->left==NULL)
{
temp->left=node;
break;
}
else
temp=temp->left;
}
else
{
if(value>temp->data)
{
if(temp->right==NULL)
{
temp->right=node;
break;
}
else
temp=temp->right;
}
}
}
}
}
//递归前序遍历法
void Preorder(Node *node)
{
if(node!=NULL)
{
printf("%d\t",node->data);
Preorder(node->left);
Preorder(node->right);
}
}
//递归后序遍历法
void Postorder(Node *node)
{
if(node!=NULL)
{
Postorder(node->left);
Postorder(node->right);
printf("%d\t",node->data);
}
}
//非递归前序遍历方法
void PreorderNonrecurion(Node *node)
{
if(node!=NULL)
{
Node *stack[MAXSIZE];
int top=-1;
Node *p=NULL;
stack[++top]=node;
while(top!=-1)
{
p=stack[top--];
printf("%d\t",p->data);
if(p->right!=NULL)
stack[++top]=p->right;
if(p->left!=NULL)
stack[++top]=p->left;
}
}
}
//非递归后序遍历法
void PostorderNonrecurion(Node *node)
{
if(node!=NULL)
{
Node *stack1[MAXSIZE];int top1=-1;
Node *stack2[MAXSIZE];int top2=-1;
stack1[++top1]=node;
Node *p=NULL;
while(top1!=-1)
{
p=stack1[top1--];
stack2[++top2]=p;
if(p->left!=NULL)
stack1[++top1]=p->left;
if(p->right!=NULL)
stack1[++top1]=p->right;
}
Node *q=NULL;
while(top2!=-1)
{
q=stack2[top2--];
printf("%d\t",q->data);
}
}
}
int main(){
int arr[7]={6,3,4,2,5,1,7};
Tree tree;
tree.root=NULL;
for(int i=0;i7;i++)
insert(&tree,arr[i]);
printf("递归前序遍历结果为\t");
Preorder(tree.root);
printf("\n\n");
printf("递归后序遍历结果为\t");
Postorder(tree.root);
printf("\n\n");
printf("非递归前序遍历结果为\t");
PreorderNonrecurion(tree.root);
printf("\n\n");
printf("非递归后序遍历结果为\t");
PostorderNonrecurion(tree.root);
}
c语言 二叉树的创建及其递归与非递归算法
标签:nbsp style class oid tree 非递归 else 结果 malloc
原文地址:https://www.cnblogs.com/oldfish123/p/12969685.html
评论