劍指Offer之Java算法習題精講二叉樹專項解析
更新時間:2022年03月18日 10:52:44 作者:明天一定.
跟著思路走,之后從簡單題入手,反復去看,做過之后可能會忘記,之后再做一次,記不住就反復做,反復尋求思路和規(guī)律,慢慢積累就會發(fā)現(xià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 { int ans; int pre; public int getMinimumDifference(TreeNode root) { ans = Integer.MAX_VALUE; pre = -1; method(root); return ans; } public void method(TreeNode root){ if(root==null) return; method(root.left); if(pre==-1){ pre = root.val; }else{ ans = Math.min(ans,root.val-pre); pre = root.val; } method(root.right); } }
題目二
?解法
/** * 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 findTilt(TreeNode root) { method(root); return ans; } public int method(TreeNode root){ if(root==null) return 0; int l = method(root.left); int r = method(root.right); ans += Math.abs(l-r); return l+r+root.val; } }
題目三
?解法
/** * 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 boolean isSubtree(TreeNode root, TreeNode subRoot) { return dfs(root,subRoot); } public boolean dfs(TreeNode root, TreeNode subRoot){ if(root==null) return false; return cheack(root,subRoot)||dfs(root.left,subRoot)||dfs(root.right,subRoot); } public boolean cheack(TreeNode root, TreeNode subRoot){ if(root==null&&subRoot==null) return true; if(root==null||subRoot==null||root.val!=subRoot.val) return false; return cheack(root.left,subRoot.left)&&cheack(root.right,subRoot.right); } }
題目四
?解法
/** * 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 boolean isSameTree(TreeNode p, TreeNode q) { if(p==null&&q==null) return true; if(p==null||q==null||q.val!=p.val) return false; return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right); } }
到此這篇關于劍指Offer之Java算法習題精講二叉樹專項解析的文章就介紹到這了,更多相關Java 二叉樹內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring Boot 集成Mybatis實現(xiàn)主從(多數(shù)據(jù)源)分離方案示例
本篇文章主要介紹了Spring Boot 集成Mybatis實現(xiàn)主從(多數(shù)據(jù)源)分離方案實例,具有一定的參考價值,有興趣的可以了解一下。2017-03-03IDEA啟動tomcat控制臺中文亂碼問題的解決方法(100%有效)
很多人在idea中啟動項目時會出現(xiàn)控制臺的中文亂碼,其實也無傷大雅,但是本人看著不舒服,下面這篇文章主要給大家介紹了關于IDEA啟動tomcat控制臺中文亂碼問題的解決方法,需要的朋友可以參考下2022-09-09Java實現(xiàn)紀元秒和本地日期時間互換的方法【經(jīng)典實例】
這篇文章主要介紹了Java實現(xiàn)紀元秒和本地日期時間互換的方法,結合具體實例形式分析了Java日期時間相關操作技巧,需要的朋友可以參考下2017-04-04java.lang.Runtime.exec() Payload知識點詳解
在本篇文章里小編給大家整理的是一篇關于java.lang.Runtime.exec() Payload知識點相關內容,有興趣的朋友們學習下。2020-03-03詳解Spring Boot使用系統(tǒng)參數(shù)表提升系統(tǒng)的靈活性
Spring Boot項目中常有一些相對穩(wěn)定的參數(shù)設置項,其作用范圍是系統(tǒng)級的或模塊級的,這些參數(shù)稱為系統(tǒng)參數(shù)。這些變量以參數(shù)形式進行配置,從而提高變動和擴展的靈活性,保持代碼的穩(wěn)定性2021-06-06