首页 > 其他 > 详细

二叉树

时间:2020-05-29 01:08:27      阅读:61      评论:0      收藏:0      [点我收藏+]

近期学习二叉树,注重递归的使用。

技术分享图片
//20191003155  计算机类1902  李晓宁  5.24 
#include<iostream>
#include<string.h>
using namespace std;
static int i=0;//i为全局变量 
typedef struct BiNode{                //二叉链表定义
    char data;
    struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;

//用算法5.3 先序遍历的顺序建立二叉链表
void CreateBiTree(BiTree &T,char a[]){    
    //按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树T
    char ch;
    ch=a[i++];
    {if(ch==#)  T=NULL;            //递归结束,建空树
    else{                            
        T=new BiTNode;
        T->data=ch;                    //生成根结点
        CreateBiTree(T->lchild,a);    //递归创建左子树
        CreateBiTree(T->rchild,a);    //递归创建右子树
    }    
    }        
                
}                                    //CreateBiTree

void InOrderTraverse(BiTree T){  
    //中序遍历二叉树T的递归算法
    if(T){
        cout << T->data<<" ";
        InOrderTraverse(T->lchild);
        InOrderTraverse(T->rchild);
        
    }
}
int CountLeaves(BiTree T)
{
    if(T==NULL) return 0;
    else if(T->lchild==NULL&&T->rchild==NULL) return 1;
    else  return CountLeaves(T->lchild)+CountLeaves(T->rchild);
    
}
int main(){
    
     char a[100];
    while(cin>>a)
    {
    BiTree tree;
    i=0;
    CreateBiTree(tree,a);
    InOrderTraverse(tree);
    cout<<endl;
    cout<<CountLeaves(tree)<<endl;
    return 0;
    }

}
View Code

 

二叉树

原文:https://www.cnblogs.com/sanens/p/12984819.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!