題目
方案方法1、使用dfs 遞迴遍歷
public boolean issymmetric(treenode root)
return helper(root.left,root.right);
}private boolean helper(treenode left,treenode right)
if(left==null||right==null||(left.val!=right.val))
return helper(left.left,right.right)&&helper(left.right,right.left);
}
方法2、使用bfs遍歷 因為是二叉樹要判斷映象,所以佇列中除了根節點外,都要放4個元素,有的題解中使用了雙端佇列,但是覺得沒有必要,乙個佇列完全可以滿足 就左右挨著放唄
public boolean issymmetric(treenode root)
queuequeue = new linkedlist();
queue.add(root.left);
queue.add(root.right);
while (!queue.isempty())
if(tmpleft ==null||tmpright==null||(tmpleft.val!=tmpright.val))
queue.add(tmpleft.left);
queue.add(tmpright.right);
queue.add(tmpleft.right);
queue.add(tmpright.left);
}return true;
}
使用遞迴和層次遍歷需要注意的是bfs中遇到節點對稱要繼續往下判斷,只有發現不對稱才返回。 《劍指offer 面試題28 對稱的二叉樹》
劍指offer 面試題28 對稱的二叉樹 註明 僅個人學習筆記 先序遍歷的序列 等於 對稱先序遍歷的序列 當樹中所有節點均相同時,遍歷時,序列中帶入null,便可區分 package com.chapter3.code public class issymmetrical28 private boo...
劍指offer 面試題28 對稱的二叉樹
請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 示例 1 輸入 root 1,2,...
劍指OFFER 面試題28 對稱的二叉樹
題目 請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 34 43但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 33示例 1 輸入 root 1,2,2,...