一种存资料的型态,由最初的节点延伸下多个分支,每个分支都个有个自的子分支,分支下可分割成彼此不相交的子集合,也称为子树。
由一个跟节点和两个分支构成的树,两个分支一位置被称为左子树与右子树,树不可为空集合,二元树可以,且有顺序之分。
先略
左儿子 资料 右儿子
L V R
依照追踪组合有六种:LVR、LRV、VLR、VRL、RVL、RLV
因追踪有受先左再右,因此剩3种:LVR 、 LRV 、 VLR
void inorder(tree_pointer ptr)
/*中序追踪 */
{
if (ptr) {
L inorder(ptr->left_child);
V printf(“%d”, ptr->data);
R inorder(ptr->right_child);
}
}
void preorder(tree_pointer ptr)
/* 前序追踪 */
{
if (ptr) {
V printf(“%d”, ptr->data);
L preorder(ptr->left_child);
R preorder(ptr->right_child);
}
}
void postorder(tree_pointer ptr)
/* 後序追踪 */
{
if (ptr) {
L postorder(ptr->left_child);
R postorder(ptr->right_child);
V printf(“%d”, ptr->data);
}
}
void iter_inorder(tree_pointer node)
{
int top= -1; /* 初始化堆叠 */
tree_pointer stack[MAX_STACK_SIZE];
for (;;) {
for (; node; node = node->left_child)
push(node); /* 将节点加入堆叠 */
node= pop(); /* 自堆叠删除节点 */
if (!node) break; /* 空堆叠 */
printf(“%d”, node->data);
node = node->right_child;
}
}
void level_order(tree_pointer ptr)
/* 阶层次序追踪 */
{
int front = rear = 0;
tree_pointer queue[MAX_QUEUE_SIZE];
if (!ptr) return; /* 空树 */
addq(ptr);
for (;;) {
ptr = deleteq();
if (ptr) {
printf (“%d”, ptr ->data);
if (ptr ->left_child)
addq(ptr ->left_child);
if (ptr ->right_child)
addq(ptr ->right_child);
}
else break;
}
}
<<: ASP.NET Core 3 起布置在 Windows IIS 方式改变
Hello 大家 连假第一天干甚麽去了呢~~ 睡到自然醒肯定是必备的吧!! 今天就来说我们要怎麽使用...
我们把前台和後台分成两个不同的专案来处理,透过连接到同一个资料库来建立关系。 而今天就来处理前台的部...
JSFiddle 在刚开始练习JavaScript可以使用这个线上练习工具JSFiddle 因为进入...
在处理完资料集後,将资料放入模型训练时,会将资料集分为训练集、验证集和测试集,训练集是模型会对训练集...
前言 使用python原生之pickle函式库进行序列化。 程序实作 提供一个年龄资料集,来实作序列...