摘要:
一、题目 1、审题 2、分析 给出一棵二叉树,判断其是否对称。 二、解答 1、思路: 方法一、 每次递归判断根节点的左孩子与根节点的右孩子是否相等。 方法二、 新建一个栈空间,根节点的左孩子与根节点的右孩子同时入栈,出栈时出两个栈顶元素,判断其值是否相等。 若相等,在入根左孩子的左孩子与根右孩子的右 阅读全文
摘要:
一、题目 1、审题 2、分析 给出一个二叉查找树,其中有两个元素的位置弄错了,写算法将其恢复。 二、解答 1、思路: 方法一、 通过中序遍历可以确定一棵二叉查找树由小到大的顺序。 所以在此错位的查找树中查找到的节点中有 1 个比后续节点值大,最后 1 个比前面相邻节点值小。交换这两个结点值即可。 阅读全文
摘要:
一、题目 1、审题 2、分析 给出三个字符串,判断 s3 是否可以由 s1 与 s2中的字符交错形成。 二、解答 1、思路: 采用一个动态布尔型二维数组 matrix 记录匹配情况。matrix[0][0] 初值为 true。 ①、先初始化 matrix 第一行、第一列。 ②、matrix[i][j 阅读全文
摘要:
一、题目 1、审题 2、分析 给出两个二叉树,判断这两个二叉树是否完全相同。 二、解答 1、思路: 方法一、 采用两个队列分别对两个二叉树进行层次遍历。 遍历时比较两个二叉树结点值是否相同。 方法二、 采用一个队列存放 q、p 两个二叉树节点,每次比较时取出两个连续的队头节点进行比较。 方法三、 利 阅读全文
摘要:
一、题目 1、审题 2、分析 判断所给二叉树是否时一个二分查找树。(left < top < right) 二、解答 1、思路: 方法一、 采用中序遍历,将遍历的节点值放入一个 List 中,再判断 List 中的元素是否时升序的即可。 方法二、 采用中序遍历,直接在便利过程中进行判断是否符合二叉查 阅读全文
摘要:
一、题目 1、审题 2、分析 给出数值 n, 输出由节点值为 1,2....n 所形成的所有二叉查找树。 二、解答 1、思路: 采用递归实现。 ①、分别假设父结点为 1,2...i...n ,则左孩子为 1,2,..i-1, 右孩子为 i+1,i+2...n。 ②、用列表 left 存储 左孩子的所 阅读全文
摘要:
一、题目 1、审题 2、分析 给出整数 n ,求 n 个节点能组成多少个不同的二分查找数。 二、解答 1、思路: (引自: https://leetcode.com/problems/unique-binary-search-trees/discuss/31666/DP-Solution-in-6- 阅读全文
摘要:
一、题目 1、审题 2、分析 给出一个二叉树,中序输出其各节点值。 二、解答 1、思路: 方法一、 采用递归 方法二、 采用一个栈记录节点,根节点先入栈 ①、访问栈顶节点(未出栈),若有左节点则左节点入栈,且将原栈顶节点 left 赋为空。 ②、若左节点为空,则站顶出栈,且右节点入栈。 保持了 左 阅读全文
摘要:
一、题目 1、审题 2、分析 给一个只含有数字的字符串,判断其拆分后满足正确 IP 地址格式的所有组合。 二、解答 1、思路: 每个 IP 地址的一项均为 0 ~ 255之间,用 1~3 位数值进行表示,故可以将字符串拆分成四项,且每一项长度为 1~3,再依次判断每项是否为 0 ~ 255 之间,满 阅读全文
摘要:
一、题目 1、审题 2、分析 给出一个整数链表,翻转从第 m 到 n 的所有节点(m <= n)。 二、解答 1、思路: 方法一、用到了 6 个指针变量 ①、新建一个伪头结点,指向 head,且一指针向前移动直到 index == m; ②、若 m <= index <= n ,则将之间的节点插入一 阅读全文