題目描述:
給定兩個二叉樹,檢查它們是否呈映象對稱,即樹的結構成軸對稱,且對應節點的節點值相同。
輸入格式
第一棵樹的輸入在第11行,表示二叉樹的前序遍歷序列。
第二棵樹的輸入在第22行,表示二叉樹的前序遍歷序列。
節點值的範圍為[0,100][0,100]區間內的整數,輸入中的−1−1表示空節點。
輸出格式
輸出yes
表示兩顆二叉樹映象對稱,輸出no
表示兩棵樹不對稱。
#include using namespace std;
struct treenode
treenode(int x, treenode * l = null, treenode * r = null) :data(x),leftchild(l), rightchild(r) {}
};class tree
void create() ;
void print()
friend void bool(tree & tree1, tree & tree2); };
bool equal(treenode * a, treenode * b)//比較當前節點值及節點a的左(右)子樹與節點b的右(左)子樹是否相等
void bool(tree & tree1, tree & tree2)
void tree::create(treenode * & subtree)//前序遍歷遞迴建立二叉樹
else
subtree = null; }}
void tree::print(treenode * subtree)
else
cout << "-1" << " ";
}int main()
二叉樹是否是映象對稱
給定一棵二叉樹,判斷它是否是自身的映象 即 是否對稱 例如 下面這棵二叉樹是對稱的 1 2 2 3 4 4 3 下面這棵二叉樹不對稱。1 2 2 3 3 備註 希望你可以用遞迴和迭代兩種方法解決這個問題 二 示例 三 演算法 思路 用高度大於2的二叉樹舉例來說吧,也就是上面第乙個例子,只要結點1的左...
判斷兩個二叉樹是否互相映象 翻轉等價二叉樹
思路 當兩個二叉樹都為null是,則為映象。否則,當其中乙個為null時,返回false。如果都不為null,並且節點的值不相等,則為false。這時,遞迴的結束條件都已列舉完畢,接下來就是遞迴呼叫了。遞迴root1的左子樹和root2的右子樹是否互為映象,並且遞迴root1的右子樹和root2的左...
二叉樹是否對稱
題目 給定一棵二叉樹,判定它是否是映象對稱的。如下是一棵映象二叉樹。1 2 2 34 43我最開始的想法是這樣的,如下 對稱二叉樹 public boolean issymmetric treenode root treenode t1 root.left treenode t2 root.righ...