数据结构——C++ 基于二叉链表的二叉树最大宽度的计算
二叉树结点的定义
typedef struct node {
char data;
struct node* left;
struct node* right;
}LTree, * Tree;
二叉树的构建(string s是已知的前序遍历的字符串,其中 0 代表空节点)
void Createtree(Tree& T, string s, int& pos)//pos用来记录字符串遍历到的位置
{
if (s[pos] == '0')//如果当前位置字符为'0',则为空节点
{
T = NULL;
pos++;
}
else
{
T = new LTree;
T->data = s[pos];
pos++;
Createtree(T->left, s, pos);
Createtree(T->right, s, pos);
}
}
构建完二叉树后,我们就要计算这棵二叉树的最大宽度了
我们用一个参数depth来记录此时遍历的深度
width数组用来记录该深度的节点个数
int Treewidth(Tree T,int &depth