day10:94. 二叉树的中序遍历、102. 二叉树的层序遍历、394. 字符串解码
day10题目:94. 二叉树的中序遍历、102. 二叉树的层序遍历、394. 字符串解码
学习计划链接:冲刺春招-精选笔面试 66 题大通关
今日知识点:树的遍历、字符串、栈,难度为简单、中等、中等
昨日题目链接:冲刺春招-精选笔面试 66 题大通关 day9
94. 二叉树的中序遍历
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
示例 1:
输入: root = [1,null,2,3]
输出: [1,3,2]示例 2:
输入: root = []
输出: []思路
easy题,中序遍历就是 左-根-右 ,前序就是根左右,后序就是左右根。
代码
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[]}
*/
var inorderTraversal = function(root) {
var ans = [];
var inorder = function(rt) {
if(!rt) return;
inorder(rt.left);
ans.push(rt.val);
inorder(rt.right);
}
inorder(root);
return ans;
};102. 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
示例 2:
示例 3:
思路
比昨天的题简单,每一层的结点存至q然后用nodelist暂存当前队列中所有结点(即该层的结点)后将q置空,遍历nodelist将每一个节点的孩子节点放入q
代码
394. 字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。
你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。
此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。
示例 1:
示例 2:
示例 3:
示例 4:
提示:
1 <= s.length <= 30s由小写英文字母、数字和方括号'[]'组成s保证是一个 有效 的输入。s中所有整数的取值范围为[1, 300]
思路
遍历,若为数字则过滤出来该数字作为k,用一个栈stack存左括号,遇到右括号且栈中左括号数量不为1时出栈,当栈中只有一个左括号时,将该当前tempStr字符串递归解码后返回,重复k次后拼接至答案ans,若为其他则正常存入。
代码
最后更新于
这有帮助吗?