二叉樹的建立以及兩個二叉樹比較異同

2021-06-25 10:18:32 字數 1362 閱讀 4158

關於二叉樹的建構函式:

在主調函式中並不宣告號指標所指向的空間,在被調函式中可以直接使用。

//二叉樹的定義,以及比較

#include using namespace std;

//二叉樹的二叉鍊錶的節點定義

typedef struct bitnode

bitnode,*bitree;

//建立二叉樹

//若該節點的資料為空,則輸入「-1」

bitree creatbitree(bitree t)

else

return t;

}//比較兩個二叉樹的異同,相同為ture,不同為false

bool cmpbitree(bitree &t1,bitree &t2)

if (null==t1||null==t2)

if (t1->data!=t2->data)

//即認為左右子樹交換後,認為同乙個樹

bool p=cmpbitree(t1->lchild,t2->lchild);

bool q=cmpbitree(t1->rchild,t2->rchild);

bool r=cmpbitree(t1->lchild,t2->rchild);

bool s=cmpbitree(t1->rchild,t2->lchild);

bool result=(p&&q)||(r&&s);

return result;

}int main()

bitnode,*bitree;

//建立二叉樹

//若該節點的資料為空,則輸入「-1」

bitree creatbitree(bitree t)

else

return t;

}//比較兩個二叉樹的異同,相同為ture,不同為false

bool cmpbitree(bitree &t1,bitree &t2)

if (null==t1||null==t2)

if (t1->data!=t2->data)

//即認為左右子樹交換後,認為同乙個樹

bool p=cmpbitree(t1->lchild,t2->lchild);

bool q=cmpbitree(t1->rchild,t2->rchild);

bool r=cmpbitree(t1->lchild,t2->rchild);

bool s=cmpbitree(t1->rchild,t2->lchild);

bool result=(p&&q)||(r&&s);

return result;

}int main()

{ //建立兩個二叉樹t1,t2

cout<<"請輸入t1的資料:"<

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...