二叉树相关代码记录

Posted 名叫丁小白

tags:

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

二叉树的应用:

#include <stdio.h>

#include<malloc.h>

typedef struct node {

    char data;

    struct  node *lchild;

   struct  node *rchild;

}BinTNode;

//创建二叉树

BinTNode *createBinTree(){

    BinTNode *t;

    char ch;

    ch=getchar();

    if(ch==’0’)

t=null;

    else{

       t=(BinTNode *)malloc(sizeof(BinTNode));

       t->data=ch;

       t->lchild=createBinTree();

       t->rchild=createBinTree();

}

return  t;

}

//广义表的形式输出二叉树

void ListBinTree(BinTNode *t){
        if(t!=NULL){

        printf(“%c”,t->data);

         if(t->lchild!=NULL||t->rchild!=NULL){

             printf(“(”);

             ListBinTree(t->lchild);

             if(t->rchild!=NULL){

                  printf(“,”);

               ListBinTree(t->rchild);

                  printf(“)”);

}

           }

}

 //二叉树的先序遍历

void   preOrder(BinTNode *t){

if(t!=NULL){

printf(“%3c”,t->data);

preOrder(t->lchild);

preOrder(t->rchild);

}

}

//求二叉树的叶子结点

void getBinTreeLeaf(BinTNode *t){

if(t->lchild==NULL&&t->rchild==NULL){

printf(“%3c”,t->data);

getBinTreeLeaf (t->lchild);

getBinTreeLeaf (t->rchild);

}

//求二叉树的深度(高度)

void getBinTreeHeight(BinTNode  *t){

       int height;

int hrchild;

int hlchild;

if(t==NULL)

return 0;

else{

hlchild= getBinTreeHeight(t-hlchild);

hrchild= getBinTreeHeight(t-hrchild);

height=hlchild>hrchild?hlchild+1hrchild+1;

printf(“%d”,height);

 

}

}

}

void   main(){

BinTNode  t=NULL;

printf(“请输入先序序列,虚节点用0表示:”);

t=creatBinTree();

printf(“广义表表示的输出:\n”);

listBinTree(t);

printf(“\n二叉树的先序遍历结果:”);

preOrder(t);

printf(“\n”);

printf(“二叉树的叶子结点为:\n”);

getBinTreeLeaf (t);

printf(“二叉树的高度为:\n”);

getBinTreeHeight(t);

}

}


以上是关于二叉树相关代码记录的主要内容,如果未能解决你的问题,请参考以下文章

总结了一些算法二叉树操作的干货 (附Python代码)

记录一下关于二叉树的非递归遍历

二叉树的层次遍历

剑指OFFER 二叉树的深度

路径总和III---双dfs/哈希表记录二叉树前缀和

在二叉树中找到两个节点最近公共祖先