随笔分类 - 算法:剑指offer
摘要:1、题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 2、解题思路: (1)将左子树构造成双向链表,并返回链表头节点; (2)定位左子树双链表的尾节点; (3)如果左子树链表不为空,将当前root连缀其链尾; (4)将右子
阅读全文
摘要:1、题目描述: 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 2、解题思路: 如果一棵树是空树,那么他就是对称的; 如果一棵树既不是空树也不是单节点树,而且这棵树和它的子树都是对称的,也就是这棵树的左子树的左子树和右子树的右子树对称,
阅读全文
摘要:1、题目描述: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 2、解题思路: (1)递归终止条件:空树高度为0; (2)递归主体:递归运算根节点的左右子树,取左右子树中深度最大值+1。 3、JavaScript实现:
阅读全文
摘要:1、题目描述: 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 2、解题思路: (1)平衡二叉树是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 (2)根据概念,我们需要判断左右子树的高度相差是否超过,并且还要判断左右子树是否是平衡二叉树。 3、JavaS
阅读全文
摘要:1、题目描述: 操作给定的二叉树,将其变换为源二叉树的镜像。 2、实现思路: (1)如果当前节点不为null,则交换当前节点的左子节点和右子节点; (2)对当前节点的左子树和右子树进行递归操作,直到当前节点为null。 3、JavaScript实现:
阅读全文
摘要:重建二叉树的前置知识: 0、遍历二叉树: (1)前序遍历:根左右 --> 先访问根节点,再前序遍历左子树,最后前序遍历右子树; (2)中序遍历:左根右 --> 先中序遍历左子树,再访问根节点,最后中序遍历右子树。 (3)后序遍历:左右根 --> 先后序遍历左子树,再后序遍历右子树,组后访问根节点。
阅读全文

浙公网安备 33010602011771号