pytest 失敗重試
阿新 • • 發佈:2022-04-09
題目連結:
劍指 Offer 28. 對稱的二叉樹
思路:本題採用遞迴的方式來進行解決,一個樹要滿足對稱,則說明左結點的左節點和右節點的右節點,以及左節點的右節點和右節點的左節點要相等
所以按照這個思路去往下遞迴,並討論好空節點的情況。遞迴的終點:找到不符合條件的情況或是兩個結點相等且都為null,其餘情況都繼續向樹的下層遞迴
程式碼實現及解析:
1 public boolean isSymmetric(TreeNode root) { 2 if (root == null) { 3 return true; 4 }5 return recur(root.left,root.right); 6 } 7 8 public boolean recur(TreeNode node1,TreeNode node2) { 9 //處理掉空指標的情況 10 if (node1 == null && node2 == null) {//都為空則返回true(因為此時遞迴也正好要結束) 11 return true; 12 } 13 if ((node1 == null&& node2 != null) || (node1 != null && node2 == null)) {//有為假的情況 14 //則直接返回false,結束遞迴 15 return false; 16 } 17 if (node1.val != node2.val) { 18 return false; 19 }20 //一直往下遞推,直到遞迴到雙空指標以true結束,或是不滿足對稱的情況,以false結束 21 return recur(node1.left,node2.right) && recur(node1.right,node2.left); 22 }