当前位置: 首页 > 面试题库 >

手写代码:求二叉树每层最大值

陆洛城
2023-03-14
本文向大家介绍手写代码:求二叉树每层最大值相关面试题,主要包含被问及手写代码:求二叉树每层最大值时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

思路:遍历树,给树的每一个节点赋予层数的信息,定义一个数组maxNum数组,存储每层中最大值,其下标i对应于树中的第i层,其中根节点为第0层。在遍历某个树节点时,先判断该节点的层数与当前数组中已存储的数是否相等,若相等,则将该节点值与当前数组最后一位值进行比较,数组取其中的最大值。若不相等,则该节点为该层第一个节点,直接将该节点值赋值给数组对应的位。深度遍历该二叉树,最后输出这个数组即可。

class Solution {
public:
vector<int> largestValues(TreeNode* root) {
if(root == NULL) {
return maxNum;
}
travel(root,level);
return maxNum;
}
TreeNode* travel(TreeNode* root, int level) {
if(!root) return NULL;
if(maxNum.size() < level + 1) {
maxNum.push_back(root->val);
} else {
maxNum[level] = max(root->val,maxNum[level]);
}
travel(root->left,level+1);
travel(root->right,level+1);
return root;
}
private:
int level = 0;
vector<int> maxNum;
};

 

 类似资料:
  • 本文向大家介绍手写代码:求全体二叉树节点最大值相关面试题,主要包含被问及手写代码:求全体二叉树节点最大值时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 本文向大家介绍手写代码:二叉树深度优先遍历相关面试题,主要包含被问及手写代码:二叉树深度优先遍历时的应答技巧和注意事项,需要的朋友参考一下 参考回答: //深度优先搜索 //利用栈,现将右子树压栈再将左子树压栈

  • 本文向大家介绍手写代码:二叉树序列化反序列化?相关面试题,主要包含被问及手写代码:二叉树序列化反序列化?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: > 序列化:必须保存一个中序遍历结果,然后外加一个前序或者后序遍历结果 >反序列化:根据两次遍历生成的结果恢复二叉树,代码如下(前序和中序):

  • 本文向大家介绍java编程求二叉树最大路径问题代码分析,包括了java编程求二叉树最大路径问题代码分析的使用技巧和注意事项,需要的朋友参考一下 题目: Binary Tree Maximum Path Sum Given a binary tree, find the maximum path sum. The path may start and end at any node in the t

  • 本文向大家介绍怎么求一个二叉树的深度?手撕代码?相关面试题,主要包含被问及怎么求一个二叉树的深度?手撕代码?时的应答技巧和注意事项,需要的朋友参考一下 考察点:二叉树    

  • 本文向大家介绍手写代码:通过前序和中序还原二叉树相关面试题,主要包含被问及手写代码:通过前序和中序还原二叉树时的应答技巧和注意事项,需要的朋友参考一下 参考回答: //算法1