也许是个简单的问题。我已经实现了一个二叉树,现在希望将二叉搜索树转换为数组,或者至少像数组一样打印输出。我遇到的问题是如何在其中添加 NULL/flags '\0'。
例如,假设我有这样一棵树:
我希望它能按照应有的打印方式进行打印。例如:
任何形式的帮助、链接、建议和示例代码都将不胜感激。
例如,假设我有这样一棵树:
10
/ \
6 12
/ \ \
1 8 15
\
4
我希望它能按照应有的打印方式进行打印。例如:
[10,6,12,1,8,\0,15,\0,4,\0,\0,\0,\0,\0,\0]
^Something Like this^ I don't know if I counted the NULL correctly.
另一种显示树型结构的方式是如何正确输出间距,例如用 '/' 和 '\' 指向父节点的键:
10
/ \
6 12
/ \ \
1 8 15
\
4
这里有一些我试着在代码上详细解释的内容,但是我卡住了:
void BreadthFirstTravseral(struct node* root)
{
queue<node*> q;
if (!root) {
return;
}
for (q.push(root); !q.empty(); q.pop()) {
const node * const temp_node = q.front();
cout<<temp_node->data << " ";
if (temp_node->left) {
q.push(temp_node->left);
}
if (temp_node->right) {
q.push(temp_node->right);
}
}
}
任何形式的帮助、链接、建议和示例代码都将不胜感激。