zoukankan      html  css  js  c++  java
  • [LeetCode] 129. Sum Root to Leaf Numbers 解题思路

    Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.

    An example is the root-to-leaf path 1->2->3 which represents the number 123.

    Find the total sum of all root-to-leaf numbers.

    For example,

        1
       / 
      2   3

    The root-to-leaf path 1->2 represents the number 12.
    The root-to-leaf path 1->3 represents the number 13.

    Return the sum = 12 + 13 = 25.

    问题:给定一个二叉树,树的每个节点都只包含一个数字 0-9,将根节点到叶子节点路径上的元素值组合成一个整数,求所有整数和。

    这是一道深度遍历的应用。深度遍历二叉树一般是递归遍历,或者借助栈遍历。每到达一个叶子节点,都需要重新遍历一次根节点到该叶子节点路径的值,借组栈遍历可以实现满足这个需要。

     1     #define null_symble  -2147483648
     2 
     3     int sumNumbers(TreeNode* root) {
     4         
     5         if(root == NULL){
     6             return 0;
     7         }
     8         
     9         list<TreeNode*> stackt;
    10         stackt.push_back(root);
    11         
    12         int sum = 0;
    13 
    14         map<TreeNode*, int> node_val;
    15 
    16         while(stackt.size() > 0){
    17             TreeNode* node = stackt.back();
    18             
    19             if(node->val != null_symble){
    20                 node_val[node] = node->val;
    21                 node->val = null_symble;
    22             }
    23             
    24             if (node->left != NULL && node->left->val != null_symble){
    25                 stackt.push_back(node->left);
    26                 continue;
    27             }
    28             
    29             if(node->right != NULL && node->right->val != null_symble){
    30                 stackt.push_back(node->right);
    31                 continue;
    32             }
    33             
    34             if(node->left == NULL && node->right == NULL){
    35                 string str = "";
    36                 list<TreeNode*>::iterator l_iter;
    37                 for(l_iter = stackt.begin(); l_iter != stackt.end(); l_iter++){
    38                     str += to_string(node_val[*l_iter]);
    39                 }
    40                 sum += stoi(str);
    41             }
    42             stackt.pop_back();
    43         }
    44         
    45         return sum;
    46     }
  • 相关阅读:
    centos7.6 安装与配置 MongoDB yum方式
    MongoDB 介绍
    centos 关闭selinux
    前端 HTML标签属性
    前端 HTML 标签嵌套规则
    前端 HTML 标签分类
    前端 HTML body标签相关内容 常用标签 表单标签 form里面的 input标签介绍
    前端 HTML body标签相关内容 常用标签 表单标签 form 表单控件分类
    前端 HTML form表单标签 select标签 option 下拉框
    POJ 1426
  • 原文地址:https://www.cnblogs.com/TonyYPZhang/p/5117886.html
Copyright © 2011-2022 走看看