文章目录
- 1. 根据二叉树创建字符串
- 2. 二叉树的层序遍历
- 3. 二叉搜索树与双向链表
1. 根据二叉树创建字符串
难度 简单 题目链接
解题思路:
这里的意思就是:用前序遍历遍历这颗树。然后左子树和右子树分别在一个括号里。括号里的规则是:
1.左右都为空,或者右为空左不为空,空括号可以省略。
2.左为空,右不为空。空括号不能省略。
代码如下:
这道题的难点主要是控制左右的情况。
2. 二叉树的层序遍历
难度 中等 题目链接
二叉树的层序遍历的层序遍历如果大家不会,可以看我这篇文章:二叉树如何层序遍历。这篇文章说的非常详细。
解题思路:
这道题的难点是什么呢?
主要是我们怎么让每一层的数据放进一个数组里。什么时候再放在下一个数组中。其实我们可以用一个变量来控制层数,然后每次一层一层出,出完一层,再出下一层。
代码如下:
还有一题是从下往上层序遍历。这个题我们只需要把前面的数组vv给逆置一下就行了。
3. 二叉搜索树与双向链表
难度 中等 题目链接
这道题大家可能会想用中序遍历,遍历一个创建一个空结点,然后链接起来。但是题目要求不允许,只能在原来树上改变。
解题思路:
定义一个cur和一个prev,然后中序遍历。
找到第一个不是空结点的位置,然后让cur的left指向prev。
然后中序到下一个位置,让prev的right指向cur。
代码如下:
因为题目要我们传递的是头指针,所以我们还需要找头。