`

c二叉树遍历--二叉链表递归实现

阅读更多
#include <stdio.h>
#include <stdlib.h>
typedef struct treeNode* Node;
typedef struct treeNode  Elem;
struct treeNode{
Node lChild,rChild;
int data;
};

typedef Node BTree;

void preOrderBTree(BTree tree);
void inOrderBTree(BTree tree);
void postOrderBTree(BTree tree);

void visitNode(Node node){
if(node == NULL){
printf("node is null , data not exists");
}
printf("%d   \t\t",node->data);
}

void createNode(Node* node,int data){
*node = (Node)malloc(sizeof(Elem));
(*node)->data= data;
(*node)->lChild = NULL;
(*node)->rChild = NULL;
}

void preOrderBTree(BTree tree){
if(tree != NULL){
visitNode(tree); //1.访问左节点
preOrderBTree(tree->lChild);//2.递归访问左子树
preOrderBTree(tree->rChild);//3.递归访问右子树
}
}

void inOrderBTree(BTree tree){
if(tree != NULL){
inOrderBTree(tree->lChild);//1.递归访问左子树
visitNode(tree); //2.访问左节点
inOrderBTree(tree->rChild);//3.递归访问右子树
}
}

void postOrderBTree(BTree tree){
if(tree != NULL){
postOrderBTree(tree->lChild);//1.递归访问左子树
postOrderBTree(tree->rChild);//2.递归访问右子树
visitNode(tree); //3.访问左节点
}
}


void main(){
//构建二叉树
BTree tree = NULL;
Node node1 = NULL;
Node node2 = NULL;
Node node3 = NULL;
Node node4 = NULL;
Node node5 = NULL;
Node node6 = NULL;
Node node7 = NULL;
Node node8 = NULL;
Node node9 = NULL;
Node node10 = NULL;
//初始化节点
createNode(&node1,2);
createNode(&node2,1);
createNode(&node3,3);
createNode(&node4,5);
createNode(&node5,8);
createNode(&node6,10);
createNode(&node7,2);
createNode(&node8,100);
createNode(&node9,20);
createNode(&node10,25);

//按照预定结构组装成书
node6->lChild = node9;
node6->rChild = node10;
node4->lChild = node7;
node5->rChild = node8;
node2->lChild = node4;
node2->rChild = node5;
node3->rChild = node6;
node1->lChild = node2;
node1->rChild = node3;
    tree = node1;

//先序遍历
preOrderBTree(tree);
printf("\n===============================================================\n");
//后序遍历
postOrderBTree(tree);
printf("\n===============================================================\n");
//中序遍历
inOrderBTree(tree);
//层级遍历
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics