1 题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 2 思路和方法 深度优先搜索,每次得到左右子树当前最大路径,选择其中较大者并回溯.int len = left>right?left+1:right+1;    // 当前最大路径 3 C++ 核心代码 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; Tre…
1 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 2 思路和方法 (1)先在A中找和B的根节点相同的结点 (2)找到之后遍历对应位置的其他结点,直到B中结点遍历完,都相同时,则B是A的子树 (3)对应位置的结点不相同时,退出继续在A中寻找和B的根节点相同的结点,重复步骤,直到有任何一棵二叉树为空退出 3 C++核心代码 3.1 递归实现1 /* struct TreeNode { int val; struct TreeNode *left…
题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 递归解析: 思路: 从根节点出发,查询左子树的深度,获取右子树的深度,比较一下,取大的,再加一.就是整个二叉树的深度. 递归的三个条件 边界条件:当前节点下,是否还有子节点,没有返回,有继续递归 递归前进段:当前节点下,还有子节点 递归返回段:当前节点下,没有子节点 递归解答 /** public class TreeNode { int val = 0; Tree…
剑指Offer - 九度1350 - 二叉树的深度2013-11-23 00:54 题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 输入: 第一行输入有n,n表示结点数,结点号从1到n.根结点为1. n <= 10. 接下来有n行,每行有两个个整型a和b,表示第i个节点的左右孩子孩子.a为左孩子,b为右孩子.当a为-1时,没有左孩子.当b为-1时,没有右孩子. 输出: 输出一个整型,表示树的深度.     样例…
题目:二叉树的深度 考点:知识迁移能力 题目描述:输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 牛客网上的剑指offer题,我按从简单到难的排序来做了 思路:从根节点出发, 查询左子树的深度 , 获取右子树的深度,比较一下,取大的,再加一 .就是整个二叉树的深度   法一:递归 /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode…
剑指 Offer 55 - I. 二叉树的深度 知识点:二叉树,递归 题目描述 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 解法一:递归法 函数功能:一个树的深度 1.终止条件:节点为空,深度为0: 2.该做什么:当前节点为根的树深度是左子树和右子树深度大的+1: 3.什么时候做:得知道子树的深度才能知道当前树:后序…
剑指Offer - 九度1521 - 二叉树的镜像2013-11-30 23:32 题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000,n代表将要输入的二叉树节点的个数(节点从1开始编号).接下来一行有n个数字,代表第i个二叉树节点的元素的值.接下来有n行,每行有一个字母Ci.Ci=’d’表示第i个节点有两子孩子,紧接着是左孩子编号和右孩子编号.Ci=’l’表示第i个节点有一个左孩子,紧…
剑指 Offer 28. 对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 /\ /\ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,nu…
问题描述: 输入一棵二叉树和一个整数,打印出二叉树中结点指的和为输入整数的所有路径.从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.二叉树结点的定义如下: public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } 思路:(待续)看了书上的思路大概明白了.但是还没想到怎么写代码...…
题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 题目分析 树的深度=左子树的深度和右子树深度中最大者+1 代码 function TreeDepth(pRoot) { if (pRoot === null) return 0; const leftDep = TreeDepth(pRoot.left); const rightDep = TreeDepth(pRoot.right); return Math.ma…