您当前的位置:首页快讯 >
刷题第九天
来源:哔哩哔哩      时间:2023-08-11 23:10:46

513. 找树左下角的值:

这题困扰我许久,我看到题解是两种方式,一种是bfs,右子节点先进队列,左再进队列,这样遍历到最后的那一个节点就是最底层的最左节点。


(资料图片仅供参考)

另外一种是递归,设置两个全局变量,一个val,一个deep,递归函数需要参数root,当前深度。如果深度大于deep,就更新val。递归要先递归左子树,再递归右子树。

之所以困扰我许久是因为,我一直在想,如果最底层只有一个右节点怎么办,

599. 两个列表的最小索引总和:

用哈希表,map<string,int> maps,string存数组元素,int存下标,设置sum标记当前的索引和。先遍历一遍list1,存在maps中。遍历list2,如果list2的元素在maps中存在,则判断sum的是否大于当前索引和,大于则将结果集清空,把该元素存进结果集,更新sum为当前索引和,如果sum等于当前索引和,则把该元素存进结果集。

559. N 叉树的最大深度:

这题和  104.二叉树的最大深度  是一个思路。

617. 合并二叉树:

用bfs。

654. 最大二叉树:

用递归,终止条件为nums长度0,返回null。用max_element函数获取最大值迭代器,此为当前的根节点,最大值的左边进入递归,返回值为root的左子树。右同。

144. 二叉树的前序遍历:

用栈迭代或递归。

94. 二叉树的中序遍历:

用栈迭代或递归。

105. 从前序与中序遍历序列构造二叉树:

用递归。如果前序和中序数组长度为0,返回null,找到中序中与前序第一个元素相同的下标i,此时,前序第一个元素为当前的根,根的左子树为前序的第二个元素开始到第i个,中序的i前面,依次递归。

106. 从中序与后序遍历序列构造二叉树:

和105类似。

145. 二叉树的后序遍历:

递归or用栈。先左节点一直入栈,如果左节点为空,右节点入栈,直到null。栈顶出栈,val存入结果集,如果当前栈顶的左节点是出栈的这个节点,那么将root置为栈顶的右节点,否则root=null。

标签:

X 关闭

X 关闭