二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
想法一:使用前序遍历,但是这里要注意这个在前序遍历的前提之下最大深度应该怎么求的。
class Solution { public: int getmax(TreeNode* root) { if (root == NULL) { return 0; } int lefts = maxDepth(root->left); int rights = maxDepth(root->right); int maxsize = 1+max(lefts, rights);//分治思想。 return maxsize; } int maxDepth(TreeNode* root) { return getmax(root); } };
想法二:用层序遍历,vector<vector<int>>的size就是深度。注意:层序遍历一定是使用的队列:
class Solution { public: int maxDepth(TreeNode* root) { queue<TreeNode*>qu;//使用的是队列,因为出去的节点的左右节点均要从屁股进去 if (root == NULL) { return 0; } vector<vector<int>>nums; qu.push(root); while (!qu.empty()) { int size = qu.size(); vector<int>num; for (int i = 0; i < size; i++) { TreeNode* top = qu.front(); num.push_back(top->val); qu.pop(); if (top->left)qu.push(top->left); if (top->right)qu.push(top->right); } nums.push_back(num); } return nums.size(); } };
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步