二叉树的最大深度
来源:互联网 发布:java微信开发教程 pdf 编辑:程序博客网 时间:2024/06/06 11:16
问题描述:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的距离。
递归解法:
class Solution {public: /** * @param root: The root of binary tree. * @return: An integer */ int maxDepth(TreeNode *root) { if (NULL == root) { return 0; } int left_depth = maxDepth(root->left); int right_depth = maxDepth(root->right); return max(left_depth, right_depth) + 1; }};
非递归(深度优先):
class Solution {public: /** * @param root: The root of binary tree. * @return: An integer */ int maxDepth(TreeNode *root) { // write your code here if (root==NULL){ return 0; } stack<TreeNode*> s; bool flag[10000]; int max = 0, i = 0; while (!s.empty()||root) { if (root) { s.push(root); flag[i++] = 0; root=root->left; } else if(flag[i-1]==0) { root = s.top()->right; flag[i-1] = 1; } else { if (max<i){ max = i; } s.pop(); i--; } } return max; }};
非递归(广度优先):
class Solution {public: /** * @param root: The root of binary tree. * @return: An integer */ int maxDepth(TreeNode *root) { // write your code here if (root==NULL){ return 0; } queue<TreeNode*> q; q.push(root); int max = 0; while (!q.empty()) { int size = q.size(); for (int i=0;i<size;i++){ root = q.front(); q.pop(); if(root->left){ q.push(root->left); } if (root->right){ q.push(root->right); } } max++; } return max; }};
阅读全文
0 0
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- 二叉树的最大深度
- velocity-tools spring中使用toolbox的一些破事
- Java和JavaScript的关系
- 对象处理好帮手Objects类
- Java集合中那些类是线程安全的 以及 Map线程安全几种实现方法
- Centos下安装Oracle问题
- 二叉树的最大深度
- React-Native中ListView 多选,单选
- 使用multimaster进行多台电脑通讯
- 5.1.I/O设备及其分类
- Kotlin-基础知识
- java随机数
- configchanges 属性
- myeclipse设置默认工作空间
- React-Native--多图选择上传