《剑指offer》刷题笔记(知识迁移能力):二叉树的深度
来源:互联网 发布:php 文章管理系统 编辑:程序博客网 时间:2024/06/05 21:57
《剑指offer》刷题笔记(知识迁移能力):二叉树的深度
- 转载请注明作者和出处:http://blog.csdn.net/u011475210
- 代码地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
- 刷题平台:https://www.nowcoder.com/
- 题 库:剑指offer
- 编 者:WordZzzz
- 剑指offer刷题笔记知识迁移能力二叉树的深度
- 题目描述
- 解题思路
- C版代码实现
- 递归
- 层序遍历
- Python版代码实现
- 递归
- 层次遍历
题目描述:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
解题思路:
DFS:题目很简单,用递归遍历只需一行。如果传入的树指针为空指针,则直接返回0;否则,递归调用TreeDepth,遍历左右子树并返回最大值。
BFS:层次遍历,需要使用队列。如果队列不为空,则在循环内不断的pop根节点、push左右子树,同时累加depth。
C++版代码实现:
递归:
/*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) { return pRoot ? max(TreeDepth(pRoot->left),TreeDepth(pRoot->right))+1 :0; }};
层序遍历:
/*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; int depth = 0; que.push(pRoot); 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; }};
Python版代码实现:
递归:
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def TreeDepth(self, pRoot): # write code here if not pRoot: return 0 return max(self.TreeDepth(pRoot.left),self.TreeDepth(pRoot.right))+1
层次遍历:
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def TreeDepth(self, pRoot): # write code here if not pRoot: return 0 a=[pRoot] depth=0 while a: b=[] for node in a: if node.left: b.append(node.left) if node.right: b.append(node.right) a=b depth=depth+1 return depth
系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~
完的汪(∪。∪)。。。zzz
阅读全文
1 0
- 《剑指offer》刷题笔记(知识迁移能力):二叉树的深度
- 剑指offer 39题 【知识迁移能力】二叉树的深度
- 《剑指offer》刷题笔记(知识迁移能力):平衡二叉树
- 剑指offer 6.3 知识迁移能力2- 二叉树的深度
- 【剑指offer】6.3知识迁移能力——面试题39:二叉树的深度
- 知识迁移能力-二叉树的深度
- 平衡二叉树(剑指offer)知识迁移能力
- 《剑指offer》刷题笔记(知识迁移能力):数组中只出现一次的数字
- 《剑指offer》刷题笔记(知识迁移能力):和为S的两个数字
- 《剑指offer》刷题笔记(知识迁移能力):和为S的连续正数序列
- 《剑指offer》刷题笔记(知识迁移能力):翻转单词顺序列
- 《剑指offer》刷题笔记(知识迁移能力):左旋转字符串
- 《剑指offer》刷题笔记(知识迁移能力):数字在排序数组中出现的次数
- 剑指offer 算法 (知识迁移能力)
- 剑指offer 6.3 知识迁移能力3- 判断二叉树是否是平衡二叉树
- 剑指offer 42题 【知识迁移能力】左旋转字符串
- 剑指offer 算法 (知识迁移能力2)
- 剑指offer 41题【知识迁移能力】和为S的连续正数序列
- 一个女程序员的自述
- SeaSar2之拦截器链-yellowcong
- SpringBoot整合Swagger
- TP框架中命名空间
- Linux下su与su -命令的区别
- 《剑指offer》刷题笔记(知识迁移能力):二叉树的深度
- Android学习体系结构图
- SQL注入之文件导入导出
- 自动记录数据录入时间不懂得VBA的朋友可以看看
- 《Learning Scrapy》1 Scrapy介绍
- dropzone上传批文件上传后台获取不到数据
- Python OpenCV 将给定目录内所有图像缩放
- Delphi调用SQL分页存储过程实例
- 大数据学习8:YARN的工作原理