码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树编程考点

时间:2017-08-20 19:50:17      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:arch   指针的引用   struct   ack   oid   tno   二叉查找树   树根   内容   

1、二叉查找树的类型定义

typedef int DataType;				//结点关键码的数据类型
typedef struct node
{
	DataType data;				//结点的数据值
	struct node * lchild, *rchild;		//指向左、右子女结点的指针
}BiTNode, *BiTree;

注意:BiTNode 等价于 struct node;*BiTree 等价于  struct node*。

2、判别给定的二叉树是否是二叉查找树

void binSearchTree (BiTNode *t, BiTNode * & pr, int & bs)			
{
	//t赋予根结点指针root,pr赋予NULL,bs赋予1
	//t为当前子树根结点
	//pr是当前子树根结点t的前驱指针
	if(t != NULL && bs)
	{
		binSearchTree (t->lchild, pr,bs);				//递归到左子树判断
		if(pr == NULL)
		{
			pr = t; bs = 1;
		}
		else
		{ 
			if(t->data > pr->data)
			{
				pr = t; bs = 1;
			}
			else 
				bs = 0;
		}
		if(bs)
			binSearchTree (t->rchild, pr,bs);		     //递归到右子树判断
	}
				
}  

注意:

  1、因为当前子树根结点t的前驱指针的值一直在改变,故采用的是指针的引用形式

  2、指针的引用,相当于传递的是: 指针的指针,这样指针的数值是可以改变的;而单传递指针,不传递指针的引用,那么指针指向的数据是可以改变,而指针本身是不可以改变的 (示例)——简单讲:*&指针本身可变;  **指针本身不变,仅指向的内容可变        

fun(int * pA); // pA的数值在函数返回后不会变化 
fun(int*& pA); // pA的数值在函数返回可能会发生变化,如果fun函数内部对pA赋值的话

void InitStack(LNode*& HS) 
{ 
HS = NULL; // 函数返回后,HS就是NULL了 
} 

void InitStack(LNode* HS) 
{ 
HS = NULL; // 函数返回后,HS依然是传递进来的数值 
}

  

 

二叉树编程考点

标签:arch   指针的引用   struct   ack   oid   tno   二叉查找树   树根   内容   

原文地址:http://www.cnblogs.com/wxt19941024/p/7400949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!