遍历-精通数据结构的帮忙看看,为什么参数是这个?

问题描述

精通数据结构的帮忙看看,为什么参数是这个?

//是这样的,如果TreeInsert()中的第一个参数是Tree * T就无法遍历整个树,而传入 Tree * &才可以,为什么?是因为引用吗?
//还是因为其他原因?
#include
#include
#include
typedef struct tree {
int number;
struct tree * left;
struct tree * right;
}Tree;
void print(Tree * T);
Tree * TreeInsert(Tree* T, int n) {
if (T == NULL) {
T = (Tree *)malloc(sizeof(Tree));
if (T == NULL) {
printf("Out of space!");
return NULL;
}
else {
T->number = n;
T->left = T->right = NULL;
}
}
else if (n < T->number) {
TreeInsert(T->left, n);
}
else if (n >T->number) {
TreeInsert(T->right, n);
}
print(T);
return T;
}
void print(Tree * T) {
if (T == NULL) {
return;
}
else {
print(T->left);
printf("%4d", T->number);
print(T->right);
}
}
void main() {
int temp, n, i = 0;
printf("please input a number:");
scanf("%d", &n);
Tree * Ntree = NULL;
for (i = 0;i < n;i++) {
printf("Now please input a number:");
scanf("%d", &temp);
TreeInsert(Ntree, temp);
}
print(Ntree);

}

解决方案

TreeInsert(Ntree, temp);
->
Ntree = TreeInsert(Ntree, temp);
这样就不一定要引用了。

时间: 2024-08-21 02:49:19

遍历-精通数据结构的帮忙看看,为什么参数是这个?的相关文章

c++ 数据结构-实现以下对单链表的操作,要求单链表一次遍历效率(数据结构c++)

问题描述 实现以下对单链表的操作,要求单链表一次遍历效率(数据结构c++) double averageExceptMaxMin(SinglyList &list) ?//去掉最高分和最低分,再求平均值 解决方案 double averageExceptMaxMin(SinglyList &list){ double d = 0.0; int n = 0; double max = 0.0; double min = 0.0; Node * node = &list.head; w

数据结构: 帮忙回答一下下面的这个有关最坏情况下的时间复杂度问题

问题描述 数据结构: 帮忙回答一下下面的这个有关最坏情况下的时间复杂度问题 解决方案 O我就省略了.. 1 n n/2 n n n 1 logN logN logN logN

二叉树 层序遍历-C++ 数据结构、二叉树、层序遍历问题

问题描述 C++ 数据结构.二叉树.层序遍历问题 代码结构如下: template class CirQueue... // 栈类: template struct BiNode{ // 节点类: T data; BiNode *lchild, * rchild; }; template class BiTree.... // 二叉树类: ? template void BiTree::leverOrder( ) { // 层序遍历: if( root == NULL ) { cout<<&q

非递归二叉树遍历-c语言中函数指针作为参数与函数的嵌套

问题描述 c语言中函数指针作为参数与函数的嵌套 函数指针作为另一函数的参数和函数的嵌套的区别,感觉都是调用,有什么不一样呢?他们都适用在什么情况下!(我是在学非递归遍历二叉树时看到的) Status Visit(TElemType e){ printf("%cn",e); return OK; } Status InOrderTraverse(BiTree T ,Status(*Visit)(TElemType e)){ SqStack S; InitStack(S); Push(S,

求救!请精通数据结构(面向对象和C++语言描述)

问题描述 图的遍历和生成树求解实现要求:1)先任意创建一个图:2)图的DFS,BFS的递归和非递归算法的实现3)最小生成树(两个算法)的实现,求连通分量的实现4)要求用邻接矩阵.邻接表多种结构存储实现

@数据结构大神:递归遍历二叉树,建立树的代码 为什么错?

问题描述 @数据结构大神:递归遍历二叉树,建立树的代码 为什么错? //创建-输入-打印-递归 # include<stdio.h> # include<stdlib.h> # include<malloc.h> typedef struct Node{ char data; struct Node *Lchild; struct Node *Rchild; }BiTNode,*BiTree; BiTree CreateBiTree(BiTree bt) { char

举例讲解C语言程序中对二叉树数据结构的各种遍历方式_C 语言

二叉树遍历的基本思想 二叉树的遍历本质上其实就是入栈出栈的问题,递归算法简单且容易理解,但是效率始终是个问题.非递归算法可以清楚的知道每步实现的细节,但是乍一看不想递归算法那么好理解,各有各的好处吧.接下来根据下图讲讲树的遍历. 1.先序遍历:先序遍历是先输出根节点,再输出左子树,最后输出右子树.上图的先序遍历结果就是:ABCDEF  2.中序遍历:中序遍历是先输出左子树,再输出根节点,最后输出右子树.上图的中序遍历结果就是:CBDAEF 3.后序遍历:后序遍历是先输出左子树,再输出右子树,最后

浅谈PHP链表数据结构(单链表)_php实例

链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区) 规定:基本数据类型,一般放在栈区 复合数据类型,比如对象,放在堆区 定义一个类Hero 定义成员属性排名 $no 定义成员属性姓名 $name 定义成员属性昵称 $nickname 定义成员属性 $next,是一个引用,指向下一个Hero对象 定义构造函数,传递参数:

数据结构教程

数据结构教程-序言 数据结构教程 第一课 数据结构的基本概念和术语 数据结构教程 第二课 抽象数据类型的表示与实现 数据结构教程 第三课 算法及算法设计要求 数据结构教程 第四课 算法效率的度量和存储空间需求 数据结构教程 第五课 线性表的类型定义 数据结构教程 第六课 线性表的顺序表示和实现 数据结构教程 第七课 实验一 线性表的顺序存储实验 数据结构教程 第八课 线性表的链式表示与实现 数据结构教程 第九课 循环链表与双向链表 数据结构教程 第十课 栈的表示与实现 数据结构教程 第十一课 栈