劍指Offer之Java算法習題精講N叉樹的遍歷及數(shù)組與字符串
題目一
N叉樹題——前序遍歷
根據給定的N叉樹根節(jié)點,返回它節(jié)點值的前序遍歷
具體題目如下

解法
/*
// 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 {
ArrayList<Integer> list = new ArrayList<Integer>();
public List<Integer> preorder(Node root) {
if (root == null) return list;
list.add(root.val);
for(int i=0;i<root.children.size();i++){
preorder(root.children.get(i));
}
return list;
}
}題目二
N叉樹題——后序遍歷
根據給定的N叉樹根節(jié)點,返回它節(jié)點值的后序遍歷
具體題目如下

解法
/*
// 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 {
ArrayList<Integer> list = new ArrayList<Integer>();
public List<Integer> postorder(Node root) {
if(root==null) return list;
for(int i = 0;i<root.children.size();i++){
postorder(root.children.get(i));
}
list.add(root.val);
return list;
}
}題目三
二叉樹題——創(chuàng)建字符串
根據給定的二叉樹,采用前序遍歷的方式并按指定條件將它轉換為字符串
具體題目如下

解法
/**
* 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 {
public String tree2str(TreeNode root) {
// root為空返回""
if(root==null){
return "";
}
// root左右為空
if(root.left==null&&root.right==null){
return root.val+"";
}
// root右為空
if(root.right==null){
return root.val+"("+tree2str(root.left)+")";
}
// root左右不空或是左不為空
return root.val+"("+tree2str(root.left)+")"+"("+tree2str(root.right)+")";
}
}題目四
數(shù)組題——數(shù)組中三個數(shù)最大乘積
根據給定的整型數(shù)組,返回其中三個數(shù)組成的最大乘積
具體題目如下

解法
class Solution {
public int maximumProduct(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
// 拿到最大三個數(shù),或者最小兩個數(shù)和最大一個數(shù)
int ans = Math.max(nums[n-1]*nums[n-2]*nums[n-3],nums[n-1]*nums[0]*nums[1]);
return ans;
}
}
// 拿到最大三個數(shù),或者最小兩個數(shù)和最大一個數(shù)
class Solution {
public int maximumProduct(int[] nums) {
// 最小的和第二小的
int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
// 最大的、第二大的和第三大的
int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
for(int n:nums){
if(n<min1){
min2 = min1;
min1 = n;
}else if(n<min2){
min2 = n;
}
if(n>max1){
max3 = max2;
max2 = max1;
max1 = n;
}else if(n>max2){
max3 = max2;
max2 = n;
}else if(n>max3){
max3 = n;
}
}
return Math.max(min1*min2*max1,max1*max2*max3);
}
}到此這篇關于劍指Offer之Java算法習題精講N叉樹的遍歷及數(shù)組與字符串的文章就介紹到這了,更多相關Java N叉樹的遍歷內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IDEA Error:java: 無效的源發(fā)行版: 17錯誤
本文主要介紹了IDEA Error:java: 無效的源發(fā)行版: 17錯誤,這個錯誤是因為您的IDEA編譯器不支持Java 17版本,您需要更新您的IDEA編譯器或者將您的Java版本降級到IDEA支持的版本,本文就來詳細的介紹一下2023-08-08
在springboot中使用注解將值注入參數(shù)的操作
這篇文章主要介紹了在springboot中使用注解將值注入參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
詳解使用JavaMailSender給曾經心愛的她再中秋發(fā)送一封特別的郵件
網站的服務端向用戶發(fā)郵件時,郵件中往往需要攜帶圖片,鏈接等內容。所以為了方便起見,我們一般發(fā)送HTML格式的郵件,那么怎么去拼一個HTML格式的郵件呢?——Thymeleaf。開始之前,先新建一個SpringBoot項目,并添加需要用到的依賴。然后就可以繼續(xù)往下了2022-09-09
javafx tableview鼠標觸發(fā)更新屬性詳解
這篇文章主要為大家詳細介紹了javafx tableview鼠標觸發(fā)更新屬性的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Java?Thread.currentThread().getName()?和?this.getName()區(qū)別詳
本文主要介紹了Thread.currentThread().getName()?和?this.getName()區(qū)別詳解,TestThread?testThread?=?new?TestThread();2022-02-02
MyBatis的CRUD中的不同參數(shù)綁定查詢實現(xiàn)
本文主要介紹了MyBatis的CRUD中的不同參數(shù)綁定查詢實現(xiàn),主要包括單個參數(shù)傳遞綁定,序號參數(shù)傳遞綁定,注解參數(shù)傳遞綁定,pojo(對象)參數(shù)傳遞綁定,map參數(shù)傳遞綁定這幾種類型,具有一定的參考價值,感興趣的可以了解一下2023-12-12

