1612 檢查兩棵二叉表示式樹是否等價

2021-10-18 07:43:23 字數 1633 閱讀 1467

題目描述:

二叉表示式樹是一種表達算術表示式的二叉樹。二叉表示式樹中的每乙個節點都有零個或兩個子節點。 葉節點(有 0 個子節點的節點)表示運算元,非葉節點(有 2 個子節點的節點)表示運算子。在本題中,我們只考慮 『+』 運算子(即加法)。

給定兩棵二叉表示式樹的根節點 root1 和 root2 。如果兩棵二叉表示式樹等價,返回 true ,否則返回 false 。

當兩棵二叉搜尋樹中的變數取任意值,分別求得的值都相等時,我們稱這兩棵二叉表示式樹是等價的。

**高階:**當你的答案需同時支援 『-』 運算子(減法)時,你該如何修改你的答案?

示例 1:

輸入: root1 = [x], root2 = [x]

輸出: true

示例 2:

輸入:root1 = [+,a,+,null,null,b,c], root2 = [+,+,a,b,c]

輸出:true

解釋:a + (b + c) == (b + c) + a

示例 3:

輸入: root1 = [+,a,+,null,null,b,c], root2 = [+,+,a,b,d]

輸出: false

解釋: a + (b + c) != (b + d) + a

兩棵樹中的節點個數相等,且節點個數為範圍 [1, 4999] 內的奇數。

node.val 是 『+』 或小寫英文本母。

給定的樹保證是有效的二叉表示式樹。

方法1:

(1)直接統計兩棵樹的葉子結點的字元的組成;

(2)判斷各個字元的數量是否一致;

/**

* definition for a binary tree node.

* struct node

* node(char x) : val(x), left(nullptr), right(nullptr) {}

* node(char x, node *left, node *right) : val(x), left(left), right(right) {}

* };

*/class

solution

if(root-

>left==

null

&&root-

>right==

null

)find_node

(root-

>left,counts)

;find_node

(root-

>right,counts);}

bool

checkequivalence

(node* root1, node* root2)

}return

true;}

};

兩棵二叉搜尋樹中的所有元素

給你 root1 和 root2 這兩棵二叉搜尋樹。請你返回乙個列表,其中包含 兩棵樹 中的所有整數並按 公升序 排序。示例 1 輸入 root1 2,1,4 root2 1,0,3 輸出 0,1,1,2,3,4 示例 2 輸入 root1 0,10,10 root2 5,1,7,0,2 輸出 10...

LeetCode 兩棵二叉搜尋樹的所有元素

題目鏈結 1305 給你root1和root2這兩棵二叉搜尋樹。請你返回乙個列表,其中包含 兩棵樹 中的所有整數並按 公升序 排序。示例 輸入 root1 2,1,4 root2 1,0,3 輸出 0,1,1,2,3,4 輸入 root1 0,10,10 root2 5,1,7,0,2 輸出 10,...

有序輸出兩棵二叉查詢樹中的元素

題目 給出兩棵二叉查詢樹,有序輸出所有元素,時間複雜度o n 空間複雜度o h h為樹的高度 此題就是把兩棵二叉查詢樹的中序遍歷過程結合在一起。structtreenode voidprint2bstsinsortedorder treenode root1,treenode root2 10.18...