#include "stdafx.h"
#include<iostream>
#include<stack>
#include<deque>
#include<list>
#include<string>
using namespace std;
class BiTreeNode
{
public:
BiTreeNode();
BiTreeNode(char data);
~BiTreeNode();
void SetData(char para) { data = para; }
void SetParent(BiTreeNode *para) { Parent = para; }
void SetLchild(BiTreeNode *para) { Lchild = para; }
void SetRchild(BiTreeNode *para) { Rchild = para; }
BiTreeNode **GetLchild() {return &Lchild;}
BiTreeNode **GetRchild() {return &Rchild;}
BiTreeNode **GetParent() {return &Parent;}
char GetData() {return data;}
private:
char data;
BiTreeNode *Parent;
BiTreeNode *Lchild;
BiTreeNode *Rchild;
};
BiTreeNode::BiTreeNode()
{
data = '\0';
Lchild = nullptr;
Rchild = nullptr;
Parent = nullptr;
}
BiTreeNode::BiTreeNode(char data)
{
this->data = data;
Lchild = nullptr;
Rchild = nullptr;
Parent = nullptr;
}
BiTreeNode::~BiTreeNode()
{
data = '\0';
Lchild = nullptr;
Rchild = nullptr;
}
class BinaryTree
{
public:
BinaryTree(string base);
BinaryTree(int way,string a,string b);
~BinaryTree();
void CreateBiTreeByPreAndIn(BiTreeNode *&root,string &Pre,string &In);
void CreateBiTreeByPostAndIn(BiTreeNode *&root,string &Post,string &In);
void CompleteRoot(BiTreeNode *&root,string::iterator &itr,BiTreeNode *father,string::iterator &overitr);
void GetPreOrderRecursive(BiTreeNode *root);
BiTreeNode *GetRoot() { return Root; }
void GetInOrderRecursive(BiTreeNode *root);
void GetPostOrderRecursive(BiTreeNode *root);
void GetPreOrderNonRecursive(BiTreeNode *root);
void GetInOrderNonRecursive(BiTreeNode *root);
void GetPostOrderNonRecursive(BiTreeNode *root);
void GetLevelOrder(BiTreeNode *root);
void PrintPreOrder() { cout << PreOrder << endl; }
void PrintInOrder() { cout << InOrder << endl; }
void PrintPostOrder() { cout << PostOrder << endl; }
void PrintLevelOrder() { cout << LevelOrder << endl; }
void CountNodeChildsNumber(BiTreeNode *root);
void PrintNodeChildsNumber() { cout << "0: " << LeavesNumber << " 1: " << OneChildNodeNumber << " 2: " << TwoChildNodeNumber << endl; }
void PrintLeavesNumberAtOneLevel(BiTreeNode *root,const int levelnum);
string GetWayFromRoot(char node);
void ExchangeLeftRightChild(BiTreeNode *root);
char GetNearestCommonParent(string a,string b);
void PrintNodeAtWhichLevel(const char data);
void ClearTraverseSequance() { PreOrder.clear(); InOrder.clear(); PostOrder.clear(); }
private:
B
二叉树操作-C++代码
最新推荐文章于 2023-12-31 17:04:58 发布