功能介绍
1、C++实现了对二叉树的构造
2、用先序遍历、中序遍历、后序遍历输出二叉树结点
3、递归求得叶子结点数、结点数
4、求第一条最长路径
完整代码
#include<iostream>
#include<stack>
using namespace std;
struct TreeNode {
int Data;
struct TreeNode* Left;
struct TreeNode* Right;
};
class Tree {
private:
TreeNode* tree=new TreeNode;
void CreatUTree(TreeNode*& tree, int* str, int& n) {
//创建二叉树
int data = str[n++];
if (data > 0 || data == 0) {
if (data == 0)tree = NULL;
else {
tree = new TreeNode;
if (!tree) {
cout << "空间申请失败!" << endl;
exit(-1);
}
tree->Data = data;
CreatUTree(tree->Left, str, n);
CreatUTree(tree->Right, str, n);
}
}
else {
tree = NULL;
}
}
void PreOrder(TreeNode* tree)
{
//先续遍历
if (tree)
{
printf("%d ", tree->Data);
PreOrder(tree->Left);
PreOrder(tree->Right);
}
}
void InOrder(TreeNode* tree)
{
//中序遍历
if (tree)
{
InOrder(tree->Left);
printf("%d ", tree->Data);
InOrder(tree->Right);
}
}
void PostOrder(TreeNode* tree)
{
//后续遍历
if (tree)
{
PostOrder(tree->Left);
PostOrder(tree->Right);
printf("%d ", tree->Data);
}