树与二叉树

二叉树与度为2的树的区别:

对树来说,结点的子树是不区分左右顺序的,因此度为2的树只能说明树中每个结点个数不超过2。而二叉树虽然也满足每个结点的度均不超过2,但是其子树是讲究左右顺序的,不能随意调换两者位置,这便是二叉树与度为2的树最主要的区别。

两种特殊的二叉树:

1,满二叉树:每一层的结点个数都达到了当层能达到的最大结点数。

2,完全二叉树:除了最下面一层之外,其余层的结点个数都达到了当层能达到的最大结点数,且最下面一层只从左至右连续存在若干结点,而这些连续结点右边的结点全部不存在。

二叉树的存储结构

二叉链表定义如下:

struct node{
 typename data;
 node* lchild;
 node* rchild;
};

由于二叉树建立前根结点为空

node* root = NULL;

如果需要建立新结点

node*  newNode(int v){
  node* Node = new node;
  Node->data = v;
  Node->lchild = Node->rchild = NULL;
  return Node; 
}

二叉树结点的查找、修改

void search(node* root,int x,int y,int newdata){
  if(root == NULL){
   return ; 
  }
  if(root->data == x){
   root->data = newdata;
  }
  search(root->lchild,x,newdata);
  search(root->rchild,x,newdata);
}

二叉树结点的插入

void insert(node*&root,int x){
	if(root == NULL){
		root = newNode(x);
		return ;
	}
	if(由二叉树性质,x应该插在左子树){
	   insert(root->lchild,x);
	}else{
		insert(root->rchild,x);
	}
} 

二叉树的建立

node* create(int data[],int n){
	node* root = NULL;
	for(int i = 0;i<n;i++){
		insert(root,data[i]);
	}
	return root;
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值