力扣labuladong一刷day34天
2023-12-15 01:06:46
力扣labuladong一刷day34天
一、230. 二叉搜索树中第K小的元素
题目链接:https://leetcode.cn/problems/kth-smallest-element-in-a-bst/?utm_source=LCUS&utm_medium=ip_redirect&utm_campaign=transfer2china
思路:这是一道很基础的利用二叉搜索树特性的题目,中序遍历二叉搜索树就会得到一个递增的序列,这个题直接计数相等记录下来即可
class Solution {
int i = 1, value = 0;
public int kthSmallest(TreeNode root, int k) {
traverse(root, k);
return value;
}
void traverse(TreeNode root, int k) {
if (root == null) return;
traverse(root.left, k);
if (i == k) {
value = root.val;
}
i++;
traverse(root.right, k);
}
}
二、538. 把二叉搜索树转换为累加树
题目链接:https://leetcode.cn/problems/convert-bst-to-greater-tree/
思路:本题让把二叉搜索树变成累加树,每个节点的值变成大于他的值与他的和,那这样做的话,中序遍历最后的位置的一个数是最大的,也就是他自身,倒数第二个数是自身值与倒数第一的和,这样我们只需要把中序遍历的顺序颠倒一下,先遍历right再遍历left,然后用一个p指针记录上一个遍历过的节点,这样就可以完成累加。
class Solution {
TreeNode p = null;
public TreeNode convertBST(TreeNode root) {
traverse(root);
return root;
}
void traverse(TreeNode root) {
if (root == null) return;
traverse(root.right);
if (p == null) {
p = root;
}else {
root.val += p.val;
p = root;
}
traverse(root.left);
}
}
文章来源:https://blog.csdn.net/qq_43511039/article/details/134913569
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!