1. 程式人生 > 其它 >PHP函式及應用

PHP函式及應用

技術標籤:二叉樹二叉樹leetcodejava

提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文件

對稱二叉樹


題目描述

給定一個二叉樹,檢查它是否是映象對稱的。 例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

在這裡插入圖片描述
但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
在這裡插入圖片描述

注意:題目來自leetcode


解題過程

解題思路

利用遞迴方法,遞迴呼叫自己,並且遞迴函式遞迴判斷對稱情況。
1、建立一個boolean返回值型別的recur遞迴函式,傳入的是左L、右R兩個節點;
2、判斷當前對稱:在recur函式中,如果L和R都為空,則暫時對稱,返回true;

3、判斷當前不對稱;經過2後,如果L為空或R為空或L.val!=R.val則不對稱,返回false;
4、遞迴呼叫recur,用邏輯與連線recur(L.left,R.right)和recur(R.left,L.right);
7、遞迴結束;

程式碼如下:

/**
 * 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 isSymmetric(TreeNode root) { return root == null? true:recur(root.left, root.right); } public boolean recur(TreeNode L, TreeNode R){ //左右節點都是空的情況下是對稱的,直接返回true if(L == null & R == null){ return true; } //不對稱的3種情況
if(L == null || R == null || L.val != R.val){ return false; } //未能判斷出是否對稱,則繼續遞迴呼叫recur函式.此處由於是對稱關係,所以要用一個邏輯與連線兩個遞迴操作 return recur(L.left, R.right) && recur(L.right, R.left); } }

總結

暫時沒有總結,待續。。。