结构上的算法----树

本文总结了二叉树的经典算法问题,包括但不限于根据两种遍历顺序重建二叉树、二叉树的镜像结构、分层遍历及变形、树的子结构等。文章还探讨了平衡二叉树的判断方法、二叉树结点最大距离的求法以及如何利用哈夫曼树进行数据压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:

前序后序不能唯一确定树,中序可能有多种情况

树的问题都优先向递归靠齐,因为树本身就是递归定义的


常见的问题:

已知两种序,重建二叉树

二叉树的镜像结构

分层遍历,各种变形

树的子结构

BST转为双向链表

验证BST的后序是否合理(BST的特点是中序已知,即大小顺序)

二叉树中和为某一值的路径(树的前序+栈)

树的深度(高度)

计算AVL树中所有结点的平衡因子(其实就是计算所有结点的高度)

判断二叉树是否平衡(返回值中要带有结点深度和是否平衡两个属性,因为直接用在每个节点上用树深的递归函数会造成重复计算)

求两个结点的最低公共祖先(保存两条路径,然后相当于求两条链表的第一个公共结点)

求二叉树中结点的最大距离(距离最远的两个点,要么是孩子中最远的,要么是左子高度+右子高度+2,递归问题)

数据压缩,利用哈夫曼树实现前缀编码(可以用堆实现)

优先级队列(可以用堆实现)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值