35.二叉树的深度
来源:互联网 发布:都柏林圣三一学院 知乎 编辑:程序博客网 时间:2024/06/13 22:26
二叉树的深度
- 参与人数:3367时间限制:1秒空间限制:32768K
- 算法知识视频讲解
题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
递归的代码量小,我在本地把程序运行起来打断点跑了跑。
测试用的二叉树形状如下:
// 33.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"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;return getDepth(pRoot);}int getDepth(TreeNode* pNode) {if (pNode == NULL) return 0;int depthLeft = getDepth(pNode->left);int depthRight = getDepth(pNode->right);return depthLeft > depthRight ? depthLeft + 1 : depthRight + 1;}};int _tmain(int argc, _TCHAR* argv[]){TreeNode root(1);TreeNode rootLeft(2);TreeNode rootRight(3);TreeNode rootLeftLeft(4);TreeNode rootLeftRight(5);TreeNode rootLeftRightLeft(7);TreeNode rootRightRight(6);root.left = &rootLeft;root.right = &rootRight;rootLeft.left = &rootLeftLeft;rootLeft.right = &rootLeftRight;rootLeftRight.left = &rootLeftRightLeft;rootRight.right = &rootRightRight;Solution s;int result = s.getDepth(&root);return 0;}
第二次做:
做这种题思路一定要灵活~
// 二叉树的深度.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"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;int left = TreeDepth(pRoot->left);int right = TreeDepth(pRoot->right);return left > right ? left + 1 : right + 1;}};int _tmain(int argc, _TCHAR* argv[]){TreeNode root(1);TreeNode rootLeft(2);TreeNode rootRight(3);TreeNode rootLeftLeft(4);TreeNode rootLeftRight(5);TreeNode rootLeftRightLeft(7);TreeNode rootRightRight(6);root.left = &rootLeft;root.right = &rootRight;rootLeft.left = &rootLeftLeft;rootLeft.right = &rootLeftRight;rootLeftRight.left = &rootLeftRightLeft;rootRight.right = &rootRightRight;Solution s;int result = s.TreeDepth(&root);return 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 == NULL ) return 0 ; int left = TreeDepth( pRoot->left ) ; int right = TreeDepth( pRoot->right ) ; return left > right ? left + 1 : right + 1 ; }};
0 0
- 35.二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- xlistview上拉加载下拉刷新
- 软考程序员随笔-----6
- 左旋转字符串
- 8大排序算法图文讲解
- 结构体和类的内存字节对齐详解
- 35.二叉树的深度
- Android下摄像头预览数据
- 深入理解Java中的Map
- java中创建类与对象
- 算式为字符串时,进行求值
- SPOJ FTOUR2 Free tour II
- 了解jQuery简单动画
- 归档&存储
- CodeForge源码分享