剑指offer-38.二叉树的深度
来源:互联网 发布:淘宝比价助手 编辑:程序博客网 时间:2024/06/08 18:11
题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
思路:求深度,第一次能想到的方法就是递归,但是除了递归还有层次遍历,本文提供递归和层次遍历两种解法。递归思想就是
求左右子树,然后深度各加一,再比较哪个大,然后返回哪个。层次遍历思想就是一层一层的遍历,把该层节点用队列收起,然后弹出,
最后对该层计数(该层要么0,要么1)。
递归版本:
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: int TreeDepth(TreeNode* pRoot) { if (pRoot == NULL) return 0; else { int left = TreeDepth(pRoot->left); int right = TreeDepth(pRoot->right); return (left > right ? left + 1: right + 1); } }};
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: int TreeDepth(TreeNode* pRoot) { if (!pRoot) return 0; queue<TreeNode*> que; que.push(pRoot); int depth=0; while (!que.empty()) { int size=que.size(); depth++; for (int i=0;i<size;i++) { //一次处理一层的数据 TreeNode *node=que.front(); que.pop(); if (node->left) que.push(node->left); if (node->right) que.push(node->right); } } return depth; }};
0 0
- 剑指offer-38.二叉树的深度
- 剑指offer: 二叉树的深度(树)
- 剑指Offer之二叉树的深度
- 剑指offer--二叉树的深度
- 剑指offer之二叉树的深度
- 剑指Offer之 - 二叉树的深度
- 剑指offer-39 二叉树的深度
- 剑指offer 39 - 二叉树的深度
- 《剑指offer》二叉树的深度
- 剑指 offer:二叉树的深度
- 剑指offer—二叉树的深度
- 剑指Offer--二叉树的深度
- 剑指offer-二叉树的深度
- 剑指offer:求二叉树的深度
- 剑指offer 38 二叉树的深度
- 剑指offer 二叉树的深度
- 剑指Offer--039-二叉树的深度
- [剑指offer]二叉树的深度
- sublime3 快捷键等
- 订单退款与退款失败任务重试
- 动态规划-多边形游戏问题
- androidStudio运行java项目
- ubuntu 16.04 下安装PCL, OPENCV
- 剑指offer-38.二叉树的深度
- Kubernetes
- 《Cracking the Coding Interview程序员面试金典》----下一个较大元素(所有比他大中最小的)
- 如何处理地下管线数据
- STM32 的优先级NVIC配置
- HDOJ 2017 字符串统计
- POJ-2154-Color(Pólya)
- Java数组插入新元素的位置不同造成结果
- Java的String StringBuffer StringBuilder