论坛首页 编程语言技术论坛

C++二叉树代码实现

浏览 3080 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-10-19  
C++
下面给大家分享的是C++二叉树源代码实现步骤,通过控制台编码。
#include<iostream>

using namespace std;

struct Node
{
    Node *left;
    char ch;
    Node *right;
};

//应用前序遍历构建二叉树 ,
void CreateBinaryTree(Node *&T)
{
    char ch;
    cin>>ch;
    if(ch=='#')
        T=NULL;
    else
    {
        T=new Node;
        if(!T)
            return;
        T->ch=ch;
        CreateBinaryTree(T->left);
        CreateBinaryTree(T->right);
    }
}

//中序遍历 口诀左根右
void travelByMid(Node*&T)
{
    if(T)
    {
        travelByMid(T->left);//左
        vist(T);//根
        travelByMid(T->right);//右
    }
}

void vist(Node *&T)
{
    cout<<T->ch<<endl;
}
//从左到右遍历
void travelByPre(Node*&T)
{
    if(T)
    {
        vist(T);//根
        travelByPre(T->left);//左
        travelByPre(T->right);//右
    }
}

int getHeight(Node*&T)//求树的深度
{
    int l,r;
    if(T)
    {
        l=getHeight(T->left);//左子树的深度
        r=getHeight(T->right);//右子树的深度
        if(l>r)
            return l+1;
            return r+1;
    }
    return 0;
}

int getNodeNum(Node*&T)
{
    if(!T)     
        return 0;
    if(T->left==NULL && T->right==NULL)
        return 1;//如果是叶子节点,返回1
    
    return  1+getNodeNum(T->left)+getNodeNum(T->right);
    //返回自身1+两边的个数
}

void travelByBeh(Node*&T)//口诀左右根
{
    if(T)
    {
        travelByBeh(T->left);
        travelByBeh(T->right);
        vist(T);
    }
}

void main()
{
    Node *T;
    CreateBinaryTree(T);

    cout<<getNodeNum(T)<<endl;
}
大家根据上面的步骤自行操作一遍,不要只是看,重点是自己写加深熟练程度和对每一个函数方法的理解。项目开发可以来http://www.yuantuan.com/index/index/waibao
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics