博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 515. Find Largest Value in Each Tree Row
阅读量:6950 次
发布时间:2019-06-27

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

You need to find the largest value in each row of a binary tree.

Example:

Input:           1         / \        3   2       / \   \        5   3   9 Output: [1, 3, 9]
1 /** 2  * Definition for a binary tree node. 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     vector
largestValues(TreeNode* root) {13 vector
ret; // 存放结果值14 if(root == nullptr)15 {16 return ret; // 如果根节点指向空指针,则返回空。17 }18 dfs(root,0,ret); //调用深度优先搜索函数,先序遍历搜索19 return ret;20 }21 private: 22 void dfs(const TreeNode* root, const int depth, vector
&res)// 深度优先搜索23 {24 if (root == nullptr)25 return; //如果是叶节点则返回26 if (depth == res.size()) //如果此时的树深等于ret的长度,则将节点的值添加进去27 {28 res.push_back(root->val);29 }30 else//如果此时的深度不等于res的长度,说明这一层已经写进入过值,所以要进行比较31 {32 res[depth] = max(res[depth], root->val);33 }34 dfs(root->left, depth + 1, res);35 dfs(root-> right, depth + 1, res);36 }37 };

 有几点需要注意的:

1. 深度优先搜索时的参数,depth是实参调用,每次函数里边的值是不改变上一层中的值,而根节点指针和结果res都是会变化的,res的长度是 引用传参。

2. 此时为先序遍历

 

转载于:https://www.cnblogs.com/simplepaul/p/6713336.html

你可能感兴趣的文章
Android应用程序支持安装到SD卡
查看>>
我的软件工程课目标
查看>>
MYSQL 连接数据库命令收藏
查看>>
C#基础篇六飞行棋
查看>>
汇编语言(王爽)第一章基础知识
查看>>
在创业型软件公司的收获
查看>>
Build SSH for Development on Windows Subsystem for Linux
查看>>
学习:数学----容斥原理
查看>>
WebSite And WebApplication
查看>>
Georgia Tech Online Master of Science in Computer Science 项目经验分享
查看>>
字王珐琅体系列,初稿ok
查看>>
浏览网上资源,了解编译原理就是什么?学习编译原理有什么好处?不学有什么损失?如何学习编译原理?...
查看>>
LeetCode 226. Invert Binary Tree
查看>>
空虚、寂寞、无聊
查看>>
基础学习笔记之opencv(1):opencv中facedetect例子浅析
查看>>
JS中属性/方法调用
查看>>
iOS 7 需要再和 Android 比什么
查看>>
8-Images
查看>>
Python字节码与解释器学习
查看>>
面试题
查看>>