题解 | #二叉树根节点到叶子节点的所有路径和#

二叉树根节点到叶子节点的所有路径和

https://www.nowcoder.com/practice/185a87cd29eb42049132aed873273e83

数据结构:栈用于存储树的节点,count是一条路径的值,sum是所有路径的值。

首先创建一个栈用来存储当前路径,从根节点开始遍历树,遍历到叶子节点时便是一条完整的路径。此时该栈所有节点的数值之和也就是这条路径的长度,将该长度与之前的长度sum相加得到当前所有路径的长度之和。然后将该叶子节点提出栈,栈顶指针指向其父节点,开始寻找父节点有没有其他孩子,继而循环遍历父节点的其他孩子节点,直到找到下一条路径。以此循环,直到找到所有路径为止。

#include <stack>
class Solution {
  public:
    /**
     * @param root TreeNode类
     * @return int整型
     */
    int sumNumbers(TreeNode* root) {
        // write code here
        if(root == nullptr)
            return 0;
        stack<TreeNode*> qStack;
        qStack.push(root);
        int sum = 0;
        int count = 0;
        count += root->val;
        dsp(qStack,sum,count);
        return sum;
    }

    void dsp(stack<TreeNode*> &qStack, int &sum,int &count) {
        if (qStack.top()->left == nullptr && qStack.top()->right == nullptr) {
            sum += count;
            count = (count - qStack.top()->val)/10;
            qStack.pop();
            return;
        }
        if (qStack.top()->left != nullptr) {
            qStack.push(qStack.top()->left);
            count =count*10 + qStack.top()->val;
            dsp(qStack,sum,count);
        }
        if (qStack.top()->right != nullptr) {
            qStack.push(qStack.top()->right);
            count =count*10 + qStack.top()->val;
            dsp(qStack,sum,count);
        }
        count = (count - qStack.top()->val)/10;
        qStack.pop();
        return;
    }
};

全部评论

相关推荐

HR_丸山彩同学:你的项目描述里,系统设计讲了很多:MemCube是什么、三级存储架构怎么设计、四种遗忘策略分别是什么。这些面试的时候讲没问题,但简历上不需要这么细。 简历要突出的是影响力,不是实现细节。面试官看简历的时候想知道的是「这个项目有多大价值」,不是「这个项目具体怎么实现的」。实现细节是面试时候聊的 怎么改:技术细节可以精简为一句「采用三级存储架构+四种遗忘策略」,把省出来的篇幅用来写影响力。比如:项目有没有开源?有没有写成技术博客?有没有被别人使用过? 校园经历没有任何信息量,任何人都可以写这句话,写了等于没写。更关键的是,你投的是技术岗,校园活动经历本来就不是加分项。如果非要写,必须写出具体的数字和成果。如果你没有这些数字,那就老老实实删掉 「端到端耗时缩减30-40%」要给出确切数字和绝对值。从1000ms降到600ms是降了40%,从100ms降到60ms也是降了40%,但这两个含义完全不一样。其他也是,涉及到数据,准备好证据,口径统一,面试会问 「熟练」「熟悉」「了解」混在一起用,读起来很乱。而且「了解前端需求」最好改成「具备前后端协作经验」
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务