劍指Offer之Java算法習(xí)題精講N叉樹的遍歷及數(shù)組與字符串
題目一
N叉樹題——前序遍歷
根據(jù)給定的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叉樹題——后序遍歷
根據(jù)給定的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)建字符串
根據(jù)給定的二叉樹,采用前序遍歷的方式并按指定條件將它轉(zhuǎn)換為字符串
具體題目如下
解法
/** * 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ù)最大乘積
根據(jù)給定的整型數(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); } }
到此這篇關(guān)于劍指Offer之Java算法習(xí)題精講N叉樹的遍歷及數(shù)組與字符串的文章就介紹到這了,更多相關(guān)Java N叉樹的遍歷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud整合Netty集群實現(xiàn)WebSocket的示例代碼
文章主要介紹了SpringCloud整合Netty集群實現(xiàn)WebSocket的相關(guān)內(nèi)容,包括服務(wù)注冊和發(fā)現(xiàn)中心的配置,如使用Nacos、CommandLineRunner啟動Netty服務(wù)等,還介紹了通過Redis實現(xiàn)消息發(fā)布訂閱的機制,需要的朋友可以參考下2024-11-11Mybatis-plus和Mybatis出現(xiàn)版本不兼容的問題解決
MyBatis-Plus?與?MyBatis?之間的兼容性問題通常是由于版本不匹配引起的,本文主要介紹了Mybatis-plus和Mybatis出現(xiàn)版本不兼容的問題解決,具有一定的參考價值,感興趣的可以了解一下2024-08-08spring?controller層引用service報空指針異常nullpointExceptio問題
這篇文章主要介紹了spring?controller層引用service報空指針異常nullpointExceptio問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Java結(jié)合Vue項目打包并進行服務(wù)器部署
本文主要介紹了Java結(jié)合Vue項目打包并進行服務(wù)器部署,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07springboot項目中idea的pom.xml文件的引用標(biāo)簽全部爆紅問題解決
這篇文章主要介紹了springboot項目中idea的pom.xml文件的引用標(biāo)簽全部爆紅問題解決,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友參考下吧2023-12-12