二叉树的链式存储

本文介绍如何使用链式存储实现二叉树,并提供了建立、遍历、计算高度、叶子数、节点数等基本操作。通过给定的测试输入,展示了先序、中序、后序遍历以及查找特定值的节点计数等功能。
摘要由CSDN通过智能技术生成

实现二叉树的基本操作:建立、遍历、计算深度、结点数、叶子数等。
输入C,先序创建二叉树,#表示空节点;
输入H:计算二叉树的高度;
输入L:计算二叉树的叶子个数;
输入N:计算二叉树节点总个数;
输入1:先序遍历二叉树;
输入2:中序遍历二叉树;
输入3:后续遍历二叉树;
输入F:查找值=x的节点的个数;

输入P:以缩格文本形式输出所有节点。

测试输入:

C
ABC##DE#G##F###
H
L
N
1
2
3
F
A

P

期待的输出:

Created success!
Height=5.
Leaf=3.
Nodes=7.
Preorder is:A B C D E G F .
Inorder is:C B E G D F A .
Postorder is:C G E F D B A .
The count of A is 1.
The tree is:
A
  B
    C
    D
      E
        G
      F

#include <iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
int aa=0;
class BinaryTree  ;
class BinTreeNode   //定义结点类
{
    friend class BinaryTree;
public:
    BinTreeNode ( )
    {
        leftChild =NULL;
        rightChild =NULL;
    }
    BinTreeNode(char x,BinTreeNode *left=NULL,BinTreeNode *right=NULL ):data(x),leftChild(left),rightChild(right) //gouzao
    { 
    }               
    ~BinTreeNode ( ) { } //析构函数
private:
    BinTreeNode *leftChild,*rightChild;   //左、右子女链域
    char data;   //数据域
};
class BinaryTree
{
public:
    BinaryTree():root(NULL) //gen
    {
    }
    BinaryTree(char value)
    {
        RefValue =value;
        root =NULL;
    }
    ~BinaryTree()
    {
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值