請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。
**1:
使用遞迴每次檢查左子樹的左(右)節點和右子樹的右(左)節點
class solution
void issymmetricalhelper(treenode* node_left, treenode* node_right)
if (node_left->val != node_right->val)
issymmetricalhelper(node_left->left, node_right->right);
issymmetricalhelper(node_left->right, node_right->left);
}};
**2:
不使用遞迴,使用迭代,用乙個queue每次比較頭部元素是否滿足。
class solution
queuelefttree;
queuerighttree;
lefttree.push(proot);
righttree.push(proot);
while(lefttree.size() && righttree.size())
else
else if(tmpleftnode->left != null && tmprightnode->right == null)
else if(tmpleftnode->left == null && tmprightnode->right != null)
//judge left->right and right->left
if(tmpleftnode->right != null && tmprightnode->left != null)
else if(tmpleftnode->right != null && tmprightnode->left == null)
else if(tmpleftnode->right == null && tmprightnode->left != null)}}
if(lefttree.empty() && righttree.empty())
return false;
}};
對稱二叉樹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...