1.二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7]

    3
/ \
9 20
/ \
15 7

返回它的最大深度 3 。

java

/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
if(root==null) return 0;
int left = maxDepth(root.left)+1;
int right = maxDepth(root.right)+1;
int max = left>right?left:right;
return max;
}
}

php

/**
* Definition for a binary tree node.
* class TreeNode {
* public $val = null;
* public $left = null;
* public $right = null;
* function __construct($value) { $this->val = $value; }
* }
*/
class Solution { /**
* @param TreeNode $root
* @return Integer
*/
function maxDepth($root) {
if($root == NULL) return 0;
$left = $this->maxDepth($root->left)+1;
$right = $this->maxDepth($root->right)+1;
$max = max($left,$right);
return $max;
}
}

简化

/**
* Definition for a binary tree node.
* class TreeNode {
* public $val = null;
* public $left = null;
* public $right = null;
* function __construct($value) { $this->val = $value; }
* }
*/
class Solution { /**
* @param TreeNode $root
* @return Integer
*/
function maxDepth($root) {
return $root == NULL ? 0 : max($this->maxDepth($root->left), $this->maxDepth($root->right)) + 1;
}
}

2.二叉树的层次遍历 II

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

例如:
给定二叉树 [3,9,20,null,null,15,7], 3
/ \
9 20
/ \
15 7
返回其自底向上的层次遍历为: [
[15,7],
[9,20],
[3]
]

java

class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> lists = new ArrayList<>();
if(root==null) new ArrayList<>();
func(lists,root,0);
for(int i=0,j=lists.size()-1;i<j;i++,j--){
List<Integer> tmp = lists.get(i);
lists.set(i,lists.get(j));
lists.set(j,tmp);
}
return lists;
} private void func(List<List<Integer>> lists,TreeNode root,int level){ if(root==null) return;
if(lists.size()==level){
List<Integer> tmp = new ArrayList<>();
tmp.add(root.val);
lists.add(tmp);
}else{
lists.get(level).add(root.val);
}
func(lists,root.left,level+1);
func(lists,root.right,level+1);
}
}

TreeNode

class TreeNode {
int val;
TreeNode left;
TreeNode right; TreeNode(int x) {
val = x;
}
}

测试

import java.util.List;

public class Main {
public static void main(String[] args) {
Solution ss = new Solution();
TreeNode root = new TreeNode(3); TreeNode a1 = new TreeNode(9);
TreeNode a2 = new TreeNode(20);
root.left = a1;
root.right = a2; TreeNode b1 = new TreeNode(15);
TreeNode b2 = new TreeNode(7);
a2.left = b1;
a2.right = b2;
List<List<Integer>> lists = ss.levelOrderBottom(root);
System.out.print("result----"+ lists.toString());
}
}

php

class TreeNode{
public $val = null;
public $left = null;
public $right = null;
public function __construct($value)
{$this->val = $value;}
} class Solution { /**
* @param TreeNode $root
* @return Integer[][]
*/
public function levelOrderBottom($root)
{
if (empty($root)) {
return [];
}
$lists = [];
$lists = $this->func($lists, $root, 0);
for ($i = 0, $j = count($lists) - 1; $i < $j; $i++) {
$tmp = $lists[$i];
$lists[$i] = $lists[$j];
$lists[$j] = $tmp;
$j--;
}
return $lists;
} public function func(&$lists, $root, $level = 0)
{
if (empty($root)) {
return null;
} if (count($lists) == $level) {
$lists[$level][]=$root->val;
} else {
$lists[$level][]= $root->val;
}
$this->func($lists, $root->left, $level + 1);
$this->func($lists, $root->right, $level + 1);
return $lists;
}
}

测试

//[3,9,20,null,null,15,7]
$root = new TreeNode(3); $a1 = new TreeNode(9);
$a2 = new TreeNode(20);
$b1 = new TreeNode(15);
$b2 = new TreeNode(7); $root->left = $a1;
$root->right = $a2; $a2->left = $b1;
$a2->right = $b2; $aa = new Solution();
$rs = $aa->levelOrderBottom($root);
var_dump(json_encode($rs));

算法练习之二叉树的最大深度,二叉树的层次遍历 II的更多相关文章

  1. lintcode : 二叉树的层次遍历II

    题目 二叉树的层次遍历 II 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, ...

  2. LintCode 二叉树的层次遍历 II

    中等 二叉树的层次遍历 II 查看执行结果 42% 通过 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 您在真实的面试中是否遇到过这个 ...

  3. 107. 二叉树的层次遍历 II

    107. 二叉树的层次遍历 II 题意 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历). 解题思路 递归:利用前序遍历的思想,在递归过程中 ...

  4. LintCode-70.二叉树的层次遍历 II

    二叉树的层次遍历 II 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 按照 ...

  5. LeetCode107. 二叉树的层次遍历 II

    107. 二叉树的层次遍历 II 描述 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 示例 例如,给定二叉树: [3,9,20,null ...

  6. Java实现 LeetCode 107 二叉树的层次遍历 II(二)

    107. 二叉树的层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null, ...

  7. <二叉树的基本操作(有层次遍历)>

    #include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK ...

  8. [Swift]LeetCode107. 二叉树的层次遍历 II | Binary Tree Level Order Traversal II

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  9. Qt实现 动态化遍历二叉树(前中后层次遍历)

    binarytree.h 头文件 #ifndef LINKEDBINARYTREE_H #define LINKEDBINARYTREE_H #include<c++/algorithm> ...

随机推荐

  1. Bootstrap框架简介

    Bootstrap是Twitter公司(www. twitter.com)开发的一个基于HTML , CSS , JavaScript的技术框架,符合HTML和 CSS规范,且代码简洁.视觉优美.该框 ...

  2. NOIP2017 PJ 跳房子 —— 单调队列优化DP

    题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一.跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画n个格子,这些格子都在同一条直线上.每个格子内有一个 ...

  3. 《BUG创造队》第四次作业:基于原型的团队项目需求调研与分析

    项目 内容 这个作业属于哪个课程 2016级软件工程 这个作业的要求在哪里 实验八 团队作业4:基于原型的团队项目需求调研与分析 团队名称 BUG创造队 作业学习目标 (1)体验以原型设计为基础的团队 ...

  4. Gym-100648B: Hie with the Pie(状态DP)

    题意:外卖员开始在0号节点,有N个人点了外卖,(N<=10),现在告诉两两间距离,问怎么配送,使得每个人的外卖都送外,然后回到0号点的总时间最短,注意,同一个点可以多次经过. 思路:TSP问题( ...

  5. MongoDB 4.2 的主要亮点(转载)

    在6月份召开的MongoDB全球用户大会上, MongoDB官宣了MongoDB Server 4.2,在经过100,000多个运行实例的测试后,MongoDB 4.2表现强劲.现在4.2版本正式上线 ...

  6. BZOJ 4197: [Noi2015]寿司晚宴 状压dp+质因数分解

    挺神的一道题 ~ 由于两个人选的数字不能有互质的情况,所以说对于一个质因子来说,如果 1 选了,则 2 不能选任何整除该质因子的数. 然后,我们发现对于 1 ~ 500 的数字来说,只可能有一个大于 ...

  7. STATUS_STACK_BUFFER_OVERRUN不一定是栈缓冲区溢出

    STATUS_STACK_BUFFER_OVERRUN异常一般是指栈缓冲区溢出的溢出,代码为0xC0000409,消息提示一般为“Security check failure or stack buf ...

  8. hasura skor 一个pg 的event trigger 扩展

    hasura skor 是一个hasura 团队早期的event triggerpg 扩展,新的推荐使用graphql engine 参考架构 缺点 只有在skor 运行的时候,数据才可以被捕捉处理 ...

  9. 【loj2983】【WC2019】数树

    题目 两颗\(n\)个点的树T1和T2,有\(y\)种颜色; 现在给每个点染色,要求公共边端点的颜色相同,求: ​ 1.op=0 , T1和T2都确定,求合法染色方案数: ​ 2.op=1 , T1确 ...

  10. 使用css3变量创建炫酷悬停效果

    原文地址:www.zcfy.cc/article/stunning-hover-effects-with-css-variables 效果: 主要使用css中的var做动画效果,代码如下: <! ...