IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构C语言树 -> 正文阅读

[数据结构与算法]数据结构C语言树

二叉树的存储结构
顺序存储:适合于完全二叉树

链式存储:
定义

typedef struct BTNode{
	char data;
	struct BTNode *lchild;
	struct BTNode *rchild;
}BTNode;

递归遍历:先序,中序,后序

先序

void preorder(BTNode *p){
	if(p!=NULL){
		Visit(p);
		preorder(p->lchild);
		preorder(p->rchild);
	}
}

中序

void inorder(BTNode *p){
	if(p!=NULL){
		inorder(p->lchild);
		Visit(p);
		inorder(p->rchild);
	}
}

后序

void postorder(BTNode *p){
	if(p!=NULL){
		postorder(p->lchild);
		postorder(p->rchild);
		Visit(p);
	}
}

写一个算法求一颗二叉树的高度

int getDepth(BTNode *p){
	int LD,RD;
	if(p==NULL)
		return 0
	else
	{
		LD=getDepth(p->lchild);
		RD=getDepth(p->rchild);
		return (LD>RD?LD:RD)+1;
	}
}

在一颗以二叉链表为存储结构的二叉树中,查找data域值等于key的结点是否存在(找到任何一个就可以),如果存在则将q指向该结点,否则q赋值为NULL
分析:三种遍历方法都可以查到一棵树的每一个结点

void search(BTNode *p,BTNode *&q ,int key)
//q定义为引用型指针因为q要改变
	if(p!=NULL){
		if(p->data==key)
			q=p;
		else
		{
			search(p->lchild,q,key);
			search(p->rchild,q,key);
		}
	}

假设二叉树采用二叉链表存储结构存储,输出先序遍历中第k个节点的值

int n=0;
void trave(BTNode *p,int k){
	if(p!=NULL){
		++n;
		if(k==n){
			cout<<p->data<<endl;
			return;
		}
		trave(p->lchild,k);
		trave(p->rchild,k);
	}
}

层次遍历
建立循环队列,先将二叉树头节点入队列,然后出队列,访问该结点,如果他有左子树,则将左子树的根节点入队,如果他有右子树,则将右子树的根节点入队,然后出队,对出队结点进行访问,如此反复,直至队列为空为止。

void level(BTNode *p){
	int front,rear;
	BTNode *que[maxSize];
	front=rear=0;
	BTNode *q;
	if(p!=NULL){
		rear=(rear+1)%maxSize;
		que[rear]=p;//根节点入队
		while(front!=rear){
			front=(front+1)%maxSize;
			q=que[front];
			Visit(q);
			if(q->lchild!=NULL){
				rear=(rear+1)%maxSize;
				que[rear]=q->lchild;
			}
			if(q->rchild!=NULL){
				rear=(rear+1)%maxSize;
				que[rear]=q->rchild;
			}
		}
	}
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:55:27  更:2021-07-25 11:57:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:58:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码