91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 對稱二叉樹的判斷

發布時間:2020-08-30 00:32:09 來源:腳本之家 閱讀:296 作者:lilong117194 欄目:編程語言

1. 題目描述

請實現一個函數,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其為對稱的。

2. 解題思路

可以按照類似層次遍歷,來判斷是否是堆成二叉樹:
首先根節點以及其左右子樹,左子樹的左子樹和右子樹的右子樹相同,以及左子樹的右子樹和右子樹的左子樹相同即可,然后采用遞歸一直判斷下去。

3. 代碼

public class isSymmetrical {

 public static void main(String[] args) {
 // 新建一棵二叉搜索樹
 TreeNode root=new TreeNode(10);
 TreeNode n1=new TreeNode(5);
 TreeNode n2=new TreeNode(5);
 TreeNode n3=new TreeNode(4);
 TreeNode n4=new TreeNode(7);
 TreeNode n5=new TreeNode(7);
 TreeNode n6=new TreeNode(4);
 //TreeNode n7=new TreeNode(19);
 root.left=n1;
 root.right=n2;
 n1.left=n3;
 n1.right=n4;
 n2.left=n5;
 n2.right=n6;
 //n6.right=n7;
 
 System.out.println("后序遍歷:");
 postOrderTraverse(root);
 
 boolean temp=symmetrical(root);
 System.out.println("\n"+"結果:"+temp);
 }
 
 
 static boolean symmetrical(TreeNode pRoot)
  {
 if(pRoot == null){
      return true;
    }
    return comRoot(pRoot.left, pRoot.right);
  }
 
 
  static boolean comRoot(TreeNode left, TreeNode right) {
    if(left == null) 
     return right==null;
    if(right == null) 
     return false;
    if(left.val != right.val) 
     return false;
    return comRoot(left.right, right.left) && comRoot(left.left, right.right);
  }
  
  // 后序遍歷
  public static void postOrderTraverse(TreeNode node) { 
    if (node == null) 
      return; 
    postOrderTraverse(node.left); 
    postOrderTraverse(node.right); 
    System.out.print(node.val + " "); 
  }
}

運行:

后序遍歷:
4 7 5 7 4 5 10
結果:true

到此這篇關于java 對稱二叉樹的判斷的文章就介紹到這了,更多相關java 對稱二叉樹內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

习水县| 枞阳县| 广汉市| 文成县| 郸城县| 商丘市| 淳化县| 榕江县| 武冈市| 广平县| 得荣县| 柳江县| 宁夏| 道孚县| 兴文县| 静海县| 万州区| 黄骅市| 辉县市| 达尔| 阿荣旗| 邹城市| 景宁| 鄂托克前旗| 牙克石市| 阳新县| 项城市| 山东省| 广水市| 弋阳县| 光泽县| 新民市| 清原| 龙门县| 三门峡市| 遂平县| 阿拉善左旗| 河池市| 靖江市| 平罗县| 周口市|