码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的建立与遍历(山东理工OJ)

时间:2014-05-07 08:14:44      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:二叉树   遍历   构建   sdoj   数据结构   

数据结构实验之二叉树的建立与遍历

题目描述

       已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。

输入

 输入一个长度小于50个字符的字符串。

输出

输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。

示例输入

abc,,de,g,,f,,,

示例输出

cbegdfa
cgefdba
3
5

#include <iostream>
using namespace std;
typedef char Elem_Type;
typedef struct BiTNode
{
    Elem_Type data;
    BiTNode *lchild;
    BiTNode *rchild;
}BiTNode;
void CreateBiTree(BiTNode **root)
{
    Elem_Type temp;
    cin>>temp;
    if(temp == ‘,‘)
     *root = NULL;
    else
    {
        *root = new BiTNode;
        (*root)->data = temp;
        CreateBiTree( &(*root)->lchild );
        CreateBiTree( &(*root)->rchild );
    }
}
void InOrderTraverse(BiTNode *root)//中
{
    if( root )
    {
        InOrderTraverse( root->lchild);
        cout<<root->data;
        InOrderTraverse( root->rchild);
    }
}
void PostOrderTraverse(BiTNode *root)
{
    if( root )
    {
        PostOrderTraverse( root->lchild);
        PostOrderTraverse( root->rchild);
        cout<<root->data;
    }
}
int LeafNodes( BiTNode *root)
{
    static int count =0;
    if( !root )
      return 0;
    if( !root->lchild && !root->rchild)
      count++;
    LeafNodes(root->lchild);
    LeafNodes(root->rchild);
    return count;
}
int BiTreeDepth(BiTNode *root)
{
    if( !root )
      return 0;
    return (BiTreeDepth(root->lchild) > BiTreeDepth(root->rchild)?
            BiTreeDepth(root->lchild) : BiTreeDepth(root->rchild)) + 1;
}
int main(void)
{
    BiTNode *root = NULL;
    CreateBiTree(&root);
    InOrderTraverse(root);
    cout<<endl;
    PostOrderTraverse(root);
    cout<<endl;
    cout<<LeafNodes( root)<<endl;
    cout<<BiTreeDepth(root)<<endl;
    return  0;
} 
/**************************************
	Problem id	: SDUT OJ 2136 
	User name	: 李俊 
	Result		: Accepted 
	Take Memory	: 456K 
	Take Time	: 10MS 
	Submit Time	: 2014-05-05 23:13:18  
**************************************/

二叉树的建立与遍历(山东理工OJ),布布扣,bubuko.com

二叉树的建立与遍历(山东理工OJ)

标签:二叉树   遍历   构建   sdoj   数据结构   

原文地址:http://blog.csdn.net/li_jun_09_05/article/details/25082931

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!