博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cc++ leetcode 404.左节点之和
阅读量:3965 次
发布时间:2019-05-24

本文共 1361 字,大约阅读时间需要 4 分钟。

c/c++ leetcode 404.左节点之和

题目描述

难度简单178

计算给定二叉树的所有左叶子之和。

示例:

3   / \  9  20    /  \   15   7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

解法一,递归

遍历整个二叉树,找到根节点有left 节点 并且没有左右子节点 sum+ = 根节点的left节点的val;

class Solution {public:    int sumOfLeftLeaves(TreeNode* root) {        if (!root) return NULL;        int sum= 0;        helper(root, sum);        return sum;    }private :    void helper(TreeNode* root, int& sum) {        if (!root) return;                if (root -> left && !(root -> left -> right) && !(root -> left -> left))             sum += root -> left -> val;                  helper(root -> left, sum);        helper(root -> right, sum);    }};

时空复杂度分析

时间复杂度: 要遍历整个二叉树为O(N);

空间复杂度: 调用N个栈空间为O(N);

解法二: 用stack容器

其实思路都一样

class Solution {public:    int sumOfLeftLeaves(TreeNode* root) {        if (!root) return NULL;        int sum= 0;        stack
temp; temp.push(root); while(!temp.empty()) { TreeNode* cur = temp.top(); if (cur -> left && !(cur -> left -> right) && !(cur -> left -> left)) sum += cur -> left -> val; temp.pop(); if (cur -> right) temp.push(cur -> right); if (cur -> left) temp.push(cur -> left); } return sum; }};

时空复杂度分析

时间复杂度: 要遍历整个二叉树为O(N);

空间复杂度: 使用stack 容器保存节点为O(N);

转载地址:http://fdyki.baihongyu.com/

你可能感兴趣的文章
【转载】zedboard中PL_GPIO控制(8个sw、8个leds)
查看>>
zedboard烧写程序到FLASH,用于QSPI Flash启动
查看>>
软件工程师,你必须知道的20个常识
查看>>
常用STL算法2_查找
查看>>
常用STL算法3_排序
查看>>
常用STL算法4_拷贝和替换
查看>>
常用STL算法5_算术和生成
查看>>
常用STL算法6_集合
查看>>
STL综合案例
查看>>
数据结构 的可视化
查看>>
比较版本号的大小 新旧
查看>>
01背包问题
查看>>
O(logn)时间复杂度求Fibonacci数列
查看>>
【转】腾讯十年运维老兵:运维团队的五个“杀手锏”
查看>>
Iterator_traits
查看>>
Zedboard中的SPI通信记录文档(已实现)
查看>>
zigbee学习笔记2----cc2530 IO实验
查看>>
zigbee学习笔记4----初次接触zstack
查看>>
Android 发布到google Play的app搜索不到问题的解决
查看>>
Flutter 网络请求之基于dio的简单封装
查看>>