结构上的算法----树

来源:互联网 发布:utc转换北京时间 java 编辑:程序博客网 时间:2024/06/05 04:08

注意:

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

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


常见的问题:

已知两种序,重建二叉树

二叉树的镜像结构

分层遍历,各种变形

树的子结构

BST转为双向链表

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

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

树的深度(高度)

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

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

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

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

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

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



0 0
原创粉丝点击