我正在尝试进行树遍历。(按顺序、按顺序和后顺序)这是我的代码。
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node* left;
struct node* right;
};
void Insert(struct node* root,int item)
{
struct node* parent;
struct node* NewNode = (struct node*)malloc(sizeof(struct node));
NewNode->left = NULL;
NewNode->data = item;
NewNode->right = NULL;
if (root == NULL)
root = NewNode;
else
{
parent = root;
while (1)
{
if (parent->data>item)
{
if(parent->left == NULL)
{
parent->left = NewNode;
return;
}
parent = parent->left;
}
if (parent->data<item)
{
if(parent->right == NULL)
{
parent->right = NewNode;
return;
}
parent = parent->right;
}
}
}
}
void pre(struct node *newNode)
{
if(newNode!=NULL)
{
printf("%d ",newNode->data);
pre(newNode->left);
pre(newNode->right);
}
}
void in(struct node *newNode)
{
if(newNode!=NULL)
{
in(newNode->left);
printf("%d ",newNode->data);
in(newNode->right);
}
}
void post(struct node *newNode)
{
if(newNode!=NULL)
{
post(newNode->left);
post(newNode->right);
printf("%d ",newNode->data);
}
}
int main(void)
{
int num,i;
printf("\nHow many Numbers you wanna Enter in tree:\t");
scanf("%d",&num);
int numArr[num];
printf("\nEnter the numbers: \n");
struct node* root = NULL;
for (i=0;i<num;i++)
{
scanf("%d",&numArr[i]);
Insert(root,numArr[i]);
}
printf("\nPre order traversal is:\n");
pre(root);
printf("\nIn order traversal is:\n");
in(root);
printf("\nPost order traversal is:\n");
post(root);
}
我认为我插入值有问题,因为当我运行代码时,输出只是空的。有人能解释一下我哪里出错了吗?
在插入函数m中,将根节点和要插入的项作为参数。
然后我使用malloc创建一个新节点。
将数据插入新节点时,左、右为空,因为左和右当前不指向任何节点。
然后检查根是否为空。 如果为空,则 m 将新节点分配给根节点。
如果root不为空。(我不应该松散根,所以我将根复制到父级并使用它。)
m检查数据是否小于根。如果它小于m,则向左移动到根的左边,如果根的左边为空,则插入新节点的地址,如果它不为空,则向左移动,直到它变为空。
如果数据大于root中的值,我会做同样的事情(只是向右)。
我的解释告诉我,我走在正确的道路上。但我的代码告诉我一个不同的故事。
这是正确答案感谢大家的帮助。
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node* left;
struct node* right;
};
void Insert(struct node** root,int item)
{
struct node* parent;
struct node* NewNode = (struct node*)malloc(sizeof(struct node));
NewNode->left = NULL;
NewNode->data = item;
NewNode->right = NULL;
if (*root == NULL)
*root = NewNode;
else
{
parent = *root;
while (1)
{
if (parent->data>item)
{
if(parent->left == NULL)
{
parent->left = NewNode;
return;
}
parent = parent->left;
}
if (parent->data<item)
{
if(parent->right == NULL)
{
parent->right = NewNode;
return;
}
parent = parent->right;
}
}
}
}
void pre(struct node *newNode)
{
if(newNode!=NULL)
{
printf("%d ",newNode->data);
pre(newNode->left);
pre(newNode->right);
}
}
void in(struct node *newNode)
{
if(newNode!=NULL)
{
in(newNode->left);
printf("%d ",newNode->data);
in(newNode->right);
}
}
void post(struct node *newNode)
{
if(newNode!=NULL)
{
post(newNode->left);
post(newNode->right);
printf("%d ",newNode->data);
}
}
int main(void)
{
int num,i;
printf("\nHow many Numbers you wanna Enter in tree:\t");
scanf("%d",&num);
int numArr[num];
printf("\nEnter the numbers: \n");
struct node* root = NULL;
for (i=0;i<num;i++)
{
scanf("%d",&numArr[i]);
Insert(&root,numArr[i]);
}
printf("\nPre order traversal is:\n");
pre(root);
printf("\nIn order traversal is:\n");
in(root);
printf("\nPost order traversal is:\n");
post(root);
}
本文向大家介绍twig 什么是树枝?,包括了twig 什么是树枝?的使用技巧和注意事项,需要的朋友参考一下 示例 Twig是一种模板语言,可编译为优化的PHP代码。它主要用于输出HTML,但也可以用于输出任何其他基于文本的格式。它是一个独立组件,可以轻松集成到任何PHP项目中。 它提供了许多出色的功能: 自动转义HTML(有助于防止XSS) 考虑模板的语法设计(基于Django模板) 模板继承 巨
我想为一个类似跳棋的游戏实现一个人工智能 我写了以下方法: -方法 这将返回所有按重量排序的有效移动的列表,其中重量是根据移动的类型和位置计算的 -方法 将移动应用于棋盘,如果有棋子被杀则返回1 -方法 以恢复板的先前状态。 这是一个零和游戏,所以人工智能应该最大化玩家颜色的棋子,最小化对手的棋子。 为此,最好的方法似乎是使用最小-最大和α-β修剪。这有以下伪码 但我还没有明白如何适应我的问题。有
主要内容:决策树算法原理,决策树剪枝策略本节我们对决策算法原理做简单的解析,帮助您理清算法思路,温故而知新。 我们知道,决策树算法是一种树形分类结构,要通过这棵树实现样本分类,就要根据 if -else 原理设置判别条件。因此您可以这样理解,决策树是由许多 if -else 分枝组合而成的树形模型。 决策树算法原理 决策树特征属性是 if -else 判别条件的关键所在,我们可以把这些特征属性看成一个 集合,我们要选择的判别条件都来自于
我正在尝试转换以下内容: 在细枝上,但它却抛出了错误 未捕获的异常: DateTime::__construct():未能解析时间字符串(26/03/2013)在位置0(2): /home/vagrant/Code/Phantom网站/供应商/twig/twig/lib/Twig/T中的意外字符emplate.php行218。 如果我通过这个: 它的工作原理,所以我想我需要改变一些与树枝日期格式相
我试图设置一个细枝过滤器,其工作方式如下:{{entities | fieldnames}},该过滤器将返回一个包含实体对象的属性名称的数组。我的问题是,经过几个小时的阅读和尝试,我无法执行$this- 错误:对/Users/a77/Dropbox/06中的非对象调用成员函数get()。Proyectos/2011 U-Vox/DEV U-Vox/Uvox Web/src/Acme/DemoBun
我在wordpress菜单屏幕选项中启用了菜单项描述,并为一些菜单项添加了描述。 有人知道我如何让它们显示在木材树枝模板中吗? 还有一个子问题:我假设在树枝部分之前,我需要给functions.php添加一些东西——每当我尝试一个解决方案,上面写着“把这个添加到你的functions.php”,然后我把它放入functions.php文件提供了木材入门主题,我得到的错误,大概我是粘贴在错误的点在该