乙個二叉樹判斷其是否是堆成二叉樹:
對稱二叉樹,就是中間劃一刀,左右兩邊對應的位置是相等的
如何判斷呢?
還是要用到深度搜尋,根節點為root. 往下展開問題
如果左右節點同時為空,說明時對稱的。如果左右節點有乙個為空,不管時做還是右,都不是對稱樹,如果左右的值不相等,也不對稱。再往下怎麼迴圈: dfs兩個引數,乙個時左節點,乙個是右節點,那麼如何才應該是映象的呢?
那麼應該比較左節點的左節點與右節點的右節點,以及左節點的右節點和右節點的左節點進行對比。如果兩個都滿足,那麼說明就是對稱的。**如下
bool dfs
(binarynode* left, binarynode* right)
如果左右同時為null 的時候返回時true
蘇果左右不同時為null或者左邊的左邊的值不等於右邊的值
if((left->val != right->val)
||(left ==
null)||
(right ==
null))
return
dfs(left->lchind, right->rchild)
&&dfs
(left->rchild, right->lchind);}
bool issymmetric
(binarynode* root)
return
dfs(root->lchind, root->rchild)
;}
對稱二叉樹c 對稱的二叉樹
很簡單,關鍵還是知道怎麼樣才能判斷乙個 二叉樹是否對稱,只要採用前序 中序 後序 層次遍歷等任何一種遍歷方法,分為先左後右和先 右後左兩種方法,只要兩次結果相等就說明這棵樹是一顆對稱二叉樹。迭代版本 class solution public bool issymmetric treenode ro...
對稱二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。這題還是蠻簡單的。對稱二叉樹 include using namespace std struct treenode bool issymmetrical treenode proot1,t...
對稱二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。solution public class treenode 我們可以通過比較二叉樹的前序遍歷序列和對稱前序遍歷序列來判斷二叉樹是不是對稱的 public class solution bo...