首页 > 其他分享 >leetcode563. 二叉树的坡度。

leetcode563. 二叉树的坡度。

时间:2022-11-22 16:34:11浏览次数:68  
标签:leetcode563 right return 坡度 int sum 二叉树 root left

563. 二叉树的坡度

 

二叉树大部分题目都可以用递归解决。为了满足一般性,即使题目初试没有的情况,子问题有的,也要考虑。

递归就考虑当前的情况就行了,不要再考虑上一层或者下一层。

下面这个做法是把计算值和、计算坡度分开,时间复杂度n^2,一开始做的时候就一直在想n的情况,就没有写出来。

class Solution {
public:
    int sum(TreeNode* root)
    {
        if(root==nullptr) return 0;
        return root->val+sum(root->left)+sum(root->right);
    }
    int findTilt(TreeNode* root) {
        if(root==nullptr) return 0;
        return abs(sum(root->left)-sum(root->right))+findTilt(root->left)+findTilt(root->right);
    }
};

下面是时间效率最高的解法:

class Solution {
public:
    int res=0;
    int dfs(TreeNode* root)
    {
        if(root==nullptr) return 0;
        int left=dfs(root->left);
        int right=dfs(root->right);
        res+=abs(left-right);
        return root->val+left+right;
    }
    int findTilt(TreeNode* root)
    {
        dfs(root);
        return res;
    }
};

 

标签:leetcode563,right,return,坡度,int,sum,二叉树,root,left
From: https://www.cnblogs.com/uacs2024/p/16915534.html

相关文章

  • leetcode814. 二叉树剪枝。如果想到使用递归还是很简单的
    814.二叉树剪枝有一点疑问,为什么不能先     if(!root->left&&!root->right&&root->val==0)returnnullptr;   ?classSolution{public:TreeNode......
  • 每日算法之二叉树中和为某一值的路径(一)
    JZ82二叉树中和为某一值的路径(一)代码packageesay.JZ82二叉树中和为某一值的路径1;importjava.util.*;classTreeNode{intval=0;TreeNodeleft=......
  • 二叉树
    01.二叉搜索树的最近公共祖先235.二叉搜索树的最近公共祖先当我们从上向下去递归遍历,第一次遇到cur节点是数值在[p,q]区间中,那么cur就是p和q的最近公共祖先;当前节......
  • LC[199] 二叉树的右视图
    [199]二叉树的右视图题目链接:https://leetcode.cn/problems/binary-tree-right-side-view/description/WA一开始的想法是遍历二叉树,只需要右分枝即可。但是如果右边没......
  • 【算法】Java解答有序链表转换二叉搜索树,从中序与后序遍历序列构造二叉树
    有序链表转换二叉搜索树给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差......
  • 二叉树交换左右子树递归以及非递归算法
    递归方式基本思想:1、当待处理节点非空时,判断其左右孩子是否不同时为空:若是,转到2、否则分别递归调用左右子树进行操作。2、新建一个辅助结点,执行交换操作。3、递归调用......
  • 每日算法之判断是不是平衡二叉树
    JZ79判断是不是平衡二叉树描述输入一棵节点数为n二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balan......
  • 遍历二叉树和线索二叉树
    遍历二叉树:   L:左D:根 R:右    DLR-先根遍历    LDR-中序遍历    LRD-后序遍历  要求:给一棵二叉树,写出它的三种遍历顺序   ......
  • 二叉树的性质和存储结构
    性质:在二叉树的第i层最多有2^(i-1)个结点(i>=1)深度为k的二叉树最多有2^k-1个结点(运用等比求和)对任何一棵二叉树T,如果叶子数为n0,度为2的结点数为n2,则n0=n2+1(根据二叉......
  • 二叉树的前、中、后序遍历(迭代版)
    //前序遍历顺序:中-左-右,入栈顺序:中-右-左classSolution{publicList<Integer>preorderTraversal(TreeNoderoot){List<Integer>result=newArrayL......