实现二叉树的基本操作:建立、遍历、计算深度、结点数、叶子数等。
输入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()
{