二叉树基本操作

Posted wangtianning1223

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树基本操作相关的知识,希望对你有一定的参考价值。

二叉树的建立,前序遍历,中序遍历,后序遍历以及求深度和叶子节点个数

#include<windows.h>
#include<stdio.h>
#include<malloc.h>

typedef struct TreeNode
    int data;
    struct TreeNode *left,*right;
BiNode,*BiTree;

BiTree Create()

    int val;
    scanf("%d",&val);
    if(val<=0)
        return NULL;
    BiTree root=(BiTree)malloc(sizeof(BiNode));
    if(!root)
        printf("Failed\\n");
    if(val>0)
    
        root->data=val;
        root->left=Create();
        root->right=Create();
        return root;
    


void PreOrder(BiTree root)

    if(root==NULL)
        return;
    printf("%d\\t",root->data);
    PreOrder(root->left);
    PreOrder(root->right);


void InOrder(BiTree root)

    if(root==NULL)
        return;
    InOrder(root->left);
    printf("%d\\t",root->data);
    InOrder(root->right);


void PostOrder(BiTree root)

    if(root==NULL)
        return;
    PostOrder(root->left);
    PostOrder(root->right);
    printf("%d\\t",root->data);


int maxDepth(BiTree root)

    if(root==NULL)
        return 0;
    int maxleft=maxDepth(root->left);
    int maxright=maxDepth(root->right);
    if(maxleft>maxright)
        return maxleft+1;
    else
        return maxright+1;


int LeafNodeNum(BiTree root)

    if(root==NULL)
        return 0;
    if(root->left==NULL&&root->right==NULL)
        return 1;
    else
        return LeafNodeNum(root->left)+LeafNodeNum(root->right);

int main(void)

    BiTree root=(BiTree)malloc(sizeof(BiNode));
    root=Create();
    printf("pre\\n");
    PreOrder(root);
    printf("\\nIn\\n");
    InOrder(root);
    printf("\\npost\\n");
    PostOrder(root);
    printf("\\ndepth :%d\\n",maxDepth(root));
    printf("leafnum\\n:%d\\n",LeafNodeNum(root));
    system("pause");
    return 0;

技术图片

 

以上是关于二叉树基本操作的主要内容,如果未能解决你的问题,请参考以下文章

二叉树基本操作方法的递归调用实现

二叉树基本操作

二叉树二叉树基本操作通用接口

转 二叉树之Java实现二叉树基本操作

二叉树的应用--二叉树排序树基本操作

二叉树基本操作