森林结构及转化后的二叉树结构如图所示:
代码如下:
#ifndef _TREE_H
#define _TREE_H
#include <iostream>
using namespace std;
template <typename T>
class Tree;
template <typename T>
class TreeNode{
friend class Tree<T>;
public:
TreeNode() :m_data(T()), firstChild(NULL), nextSibling(NULL)
{}
TreeNode(T data) :m_data(data), firstChild(NULL), nextSibling(NULL)
{}
private:
T m_data;
TreeNode<T> *firstChild;
TreeNode<T> *nextSibling;
};
template <typename T>
class Tree{
typedef TreeNode<T> node_type;
public:
Tree() = default;
Tree(T ref) :refval(ref), root(NULL)
{}
public:
void init_tree(const char* str);
void preorder_traverse()const;
int Size()const;
in