不同的二叉树具有不同的行为,可以建立二叉树的继承体系,基类包含所有二叉树的共性方法,子类除了共性方法外可以自己添加个性的新方法。
Node.h(节点)
#pragma once
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
struct Node
{
int val = 0;
Node* left = NULL;
Node* right = NULL;
};
BinTree.h(基类,声明三种遍历,是所有类型二叉树的共有方法)
#pragma once
#include"Node.h"
class BinTree
{
protected:
void preOrderTraversal(Node*root);
void inOrderTraversal(Node*root);
void postOrderTraversal(Node*root);
};
BinTree.cpp(实现三种遍历)
#include "BinTree.h"
void BinTree::preOrderTraversal(Node*root)
{
if (root)
{
cout << root->val << " " << endl;
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
}
void BinTree::inOrderTraversal(Node*root)
{
if (root)
{
preOrderTraversal(root->left);
cout << root->val << " " << endl;
preOrderTraversal(root->right);
}
}
void BinTree::postOrderTraversal(Node*root)
{
if (root)
{
preOrderTraversal(root->left);
preOrderTraversal(root->right);
cout << root->val << " " << endl;
}
}
MaxHeap.h(最大堆,一种二叉树)
#pragma once
#include"BinTree.h"
class MaxHeap :public BinTree
{
private:
Node * root = NULL;
public:
void preOrder(Node*root);
void inOrder(Node*root);
void postOrder(Node*root);
};
MaxHeap.cpp(调用基类方法,实现子类功能)
#include"MaxHeap.h"
void MaxHeap::preOrder(Node*root)
{
preOrderTraversal(root);
}
void MaxHeap::inOrder(Node*root)
{
inOrderTraversal(root);
}
void MaxHeap::postOrder(Node*root)
{
postOrderTraversal(root);
}