二叉树的建立

来源:互联网 发布:vlan arp 获得保存mac 编辑:程序博客网 时间:2024/05/16 18:14

二叉树的先序建立思路就像先序遍历一样 ,利用递归思想。
链接:二叉树遍历

#include<stdio.h>#include<stdlib.h>typedef struct BinaryTreeNode {    int num;    struct BinaryTreeNode* leftNode;    struct BinaryTreeNode* rightNode;}BTNode,*PBTNode;/**先序遍历*/void PreOrder(PBTNode pHead) {    if (NULL == pHead) {        return;    }    printf("%d ",pHead->num);  //先根节点    PreOrder(pHead->leftNode);  //再先序遍历左子树    PreOrder(pHead->rightNode); //再先序遍历右子树}/**中序遍历*/void InOrder(PBTNode pHead){    if (NULL == pHead) {        return;    }        InOrder(pHead->leftNode);        printf("%d ", pHead->num);        InOrder(pHead->rightNode);}/**后序遍历*/void PostOrder(PBTNode pHead) {    if (NULL == pHead) {        return;    }    PostOrder(pHead->leftNode);    PostOrder(pHead->rightNode);    printf("%d ", pHead->num);}/**先序创建二叉树*/PBTNode Init() {    int num;    PBTNode pHead;    scanf("%d", &num);    if (-1 == num) {        pHead = NULL;    }    else    {        pHead = (PBTNode)malloc(sizeof(BTNode));        pHead->num = num;        pHead->leftNode=Init(); //递归        pHead->rightNode = Init();    }    return pHead;}int main() {    PBTNode pHead= Init();    puts("先序遍历");    PreOrder(pHead);    puts("\n中序遍历");    InOrder(pHead);    puts("\n后序遍历");    PostOrder(pHead);    return 0;}

创建此树

创建上图的树 -1代表节点空指针
这里写图片描述

0 0
原创粉丝点击