树的实现与应用:1.给定一棵用链表表示的二叉树,其根指针为root,试写出求二叉树结点数目。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树的实现与应用:1.给定一棵用链表表示的二叉树,其根指针为root,试写出求二叉树结点数目。相关的知识,希望对你有一定的参考价值。

参考技术A //非递归中序遍历算法
#include <iostream>
#include <conio.h>
#include <stack>
using namespace std;

typedef struct BiTNode
char data;
BiTNode *lchild,*rchild; //左右孩子指针
BiTNode,*BiTree;

void CreateBiTree(BiTree &T)
//按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树
//构造二叉链表表示的二叉树T
char ch;
cout<<"请输入数据:"<<"\t";
cin>>ch;
if(ch=='0')
T=NULL;
else

T=(BiTNode * )malloc(sizeof(BiTNode));
T->data=ch; //生成根结点
CreateBiTree(T->lchild); //构造左子树
CreateBiTree(T->rchild); //构造右子树

//CreateBiTree
void InOrderTraverse(BiTree &T)
//采用非递归算法输出二叉树中的值
stack<BiTNode *> s;
BiTree p=T;
while(p||!s.empty())
if(p)

s.push(p);
p=p->lchild;
//根指针进栈,遍历左子树
else
//根指针退栈,访问根结点,遍历右子树
p=s.top();
cout<<p->data<<" ";
s.pop();
p=p->rchild;
//else
//while
//InOrderTraverse
void main()
BiTree Root;
cout<<" '0' 作为空树"<<endl;
Root=(BiTNode *)malloc(sizeof(BiTNode));
CreateBiTree(Root);
cout<<"中序输出二叉树:"<<endl;
InOrderTraverse(Root);
cout<<endl;
getch();

基于二叉链表的二叉树的嵌套括号表示

#include <iostream>
using namespace std;

//二叉树的数据结构定义
typedef struct node{
    char data;
    struct node *lchild,*rchild;
}BTNode,*BTREE;

void create(BTREE &T);
void match(BTREE T);

int main(int argc, const char * argv[]) {
    BTREE T;
    create(T);
    match(T);
    cout<<endl;
    return 0;
}

//先序遍历创建二叉树,输入0代表结点为空
void create(BTREE &T){
    char ch;
    cout <<"请输入"<<endl;
    cin>>ch;
    cout<<endl;
    if(ch==\'0\')
        T==NULL;
    else{
        T = new BTNode();
        //T = (BTREE)malloc(sizeof(BTNode));
        T->data = ch;
        create(T->lchild);
        create(T->rchild);
    }
    
}
//匹配规则
void match(BTREE T){
    if(T)
    {
        cout<<T->data;
        if(T->lchild&&T->rchild)
        {
            cout<<"(";
            match(T->lchild);
            cout<<",";
            match(T->rchild);
            cout<<")";
        }
        else if(T->lchild&&T->rchild==NULL)
        {
            cout<<"(";
            match(T->lchild);
            cout<<",";
            cout<<")";
        }
        else
            if(T->lchild==NULL&&T->rchild)
            {
                cout<<"(";
                cout<<",";
                match(T->rchild);
                cout<<")";
            }
    }
}

 

以上是关于树的实现与应用:1.给定一棵用链表表示的二叉树,其根指针为root,试写出求二叉树结点数目。的主要内容,如果未能解决你的问题,请参考以下文章

建立二叉树的二叉链表表示,实现二叉树的先序、中序、后序和按层次遍历,统计并输出结点个数。

二叉树每个节点有一个权值,给定一棵二叉树,求权值和最大的值

数据结构之二叉树的实现

1、创建一棵二叉树,以二叉链表作存储结构,实现先根遍历算法 2、创建一棵二叉树,实现先根遍历算法、中根

以二叉链表为存储结构,写出求二叉树高度和宽度的算法

用C语言编写程序,创建一个二叉树的二叉链表结构,然后输出从根结点到所有叶子结点的路径。