剑指Offer之Java算法习题精讲二叉树与N叉树
更新时间:2022年03月18日 10:29:24 作者:明天一定.
跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
题目一

解法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
StringBuffer sb = new StringBuffer();
List<String> list = new ArrayList<String>();
public List<String> binaryTreePaths(TreeNode root) {
method(root);
return list;
}
public void method(TreeNode root){
if(root==null) return;
int t = sb.length();
sb.append(root.val);
if(root.left==null&&root.right==null){
list.add(sb.toString());
}
sb.append("->");
method(root.left);
method(root.right);
sb.delete(t, sb.length());
}
}
题目二

解法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
int ans = 0;
public int sumOfLeftLeaves(TreeNode root) {
method(root,false);
return ans;
}
public void method(TreeNode root,boolean flag){
if(root==null) return;
if(root.left==null&&root.right==null&&flag){
ans+=root.val;
return;
}
method(root.left,true);
method(root.right,false);
}
}
题目三

解法
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public int maxDepth(Node root) {
if(root==null){
return 0;
}
int maxChildDepth = 0;
for(int i = 0;i<root.children.size();i++){
int childDepth = maxDepth(root.children.get(i));
maxChildDepth = Math.max(maxChildDepth, childDepth);
}
return maxChildDepth+1;
}
}
到此这篇关于剑指Offer之Java算法习题精讲二叉树与N叉树的文章就介绍到这了,更多相关 Java 二叉树内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中static修饰的静态变量、方法及代码块的特性与使用
这篇文章主要介绍了Java中static修饰的静态变量、方法及代码块的特性与使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-04-04
java客户端Jedis操作Redis Sentinel 连接池的实现方法
下面小编就为大家带来一篇java客户端Jedis操作Redis Sentinel 连接池的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-03-03
java基础之Collection与Collections和Array与Arrays的区别
这篇文章主要介绍了java基础之Collection与Collections和Array与Arrays的区别的相关资料,本文主要说明两者的区别以防大家混淆概念,需要的朋友可以参考下2017-08-08


最新评论