1. 程式人生 > >判斷兩棵二叉樹是否同構

判斷兩棵二叉樹是否同構

不考慮資料內容。意味著對應的左子樹和右子樹都結構相同。

遞迴解法:

(1)如果兩棵二叉樹都為空,返回真

(2)如果兩棵二叉樹一顆為空,另一棵不為空,返回假

(3)如果兩棵二叉樹都不為空,如果對應的左子樹和右子樹都同構,返回真,其他返回假

bool StructureCmp(BinaryTreeNode *pRoot1, BinaryTreeNode *pRoot2)
{
	if (pRoot1 == NULL && pRoot2 == NULL)
		return true;
	else if (pRoot1 == NULL || pRoot2 == NULL)
		return false;
	bool resultLeft = StructrueCmp(pRoot1->lchild, pRoot2->lchild);
	bool resultRight = StructrueCmp(pRoot1->rchild, pRoot2->rchild);
	return (resultLeft && resultRight);
}

相關推薦

判斷是否

不考慮資料內容。意味著對應的左子樹和右子樹都結構相同。 遞迴解法: (1)如果兩棵二叉樹都為空,返回真 (2)如果兩棵二叉樹一顆為空,另一棵不為空,返回假 (3)如果兩棵二叉樹都不為空,如果對應的左子樹和右子樹都同構,返回真,其他返回假 bool StructureCmp

資料結構(C語言實現):判斷是否相等,bug求解

判斷兩棵二叉樹是否相等。 遇到了bug,求大神幫忙!!! C語言原始碼: #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define OK 1 #define

判斷是否相同之java實現

package com.cb.java.algorithms.jianzhioffer.tree; /** * 判斷兩個二叉樹是否相同 * * @author 36184 * */ pub

——判斷是否相等(先序和中序遍歷序列建立

需求: 利用先序遍歷序列和中序遍歷序列來建立兩棵二叉樹,並判斷是否相等 需要先將建立二叉樹 建立的方法是將該二叉樹的先序的序列和中序的序列分別儲存到Pre陣列和Mid陣列中,它們的儲存順序如下: 判斷兩棵樹是否相等 採用遞迴的方法,用先序,中序

28、輸入A,B,判斷B是不是A的子結構。(ps:我們約定空不是任意一個的子結構)

eno 技術分享 進行 結構 一個點 left courier mage new 題目描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) 思路: 1、當Tree1和Tree2都不為零的時候,才進行比較。否則直接返回fals

如何判斷

#define MaxTree 10 #define ElementType char #define Tree int #define Null -1 struct TreeNode{ElementType Element; Tree Left;Tree Righ

輸入A,B,判斷B是不是A的子結構。

要查詢樹A中是否存在和樹B結構一樣的子樹。我們可以分為兩步: 第一步在樹A中找到和B的根節點一樣的值一樣的結點R,第二步在判斷樹A中以R為根節點的子樹是不是包含和樹B一樣的結構。 樹的結點: struct TreeNode { int val;

判斷是否為排序

truct bool 結點 i++ true 源代碼 flag brush %d 判斷二叉排序樹的代碼如下: static boolean IsSearchTree(Bitree *t) { if(!t) //空二叉樹情況 return

leetcode 100 Same Tree 判斷是否相等

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *

次過】Lintcode 1126. 合併

給出兩個二叉樹,並想象當你把其中一個覆蓋另一個時,兩棵樹的一些節點重疊,而其他節點則不重疊。 您需要將它們合併到一個新的二叉樹中。 合併規則是,如果兩個節點重疊,則將節點值加起來作為合併節點的新值。 否則,非空節點將用作新樹的節點。 樣例 輸入: 樹 1

判斷是否為另一的子結構(JAVA版本)

分析:判斷root1是否為root2的子樹?首先,必須先找到樹1中與樹2的根節點相同的節點,然後判斷從該節點開始root1中是否root2的結構;若有,則返回true,若沒有,則返回false?答案是No! 因為二叉樹root1中可能含有值相同的節點,所以,如果沒有找到,就需要繼續遍歷root1.

【資料結構週週練】020 利用遞迴判斷是否為排序

一、二叉排序樹 二叉排序樹可以說是資料結構中相當重要的內容之一啦,前兩次給大家講了二叉排序樹的建立、遍歷與查詢。今天給大家分享的是二叉排序樹的應用,判斷一個二叉樹是否為一棵二叉排序樹。 二叉排序樹的特點大家都知道,左子樹根結點值<根結點<右子樹根結點值,並且中

面試題(一)---判斷結構是否相同

一、首先這個問題是判斷二叉樹的結構是否相同,所以這就和二叉樹的資料的值無關。只需要判斷結構;判斷兩個二叉樹的結構是否相同很簡單。 採用遞迴的思想: (1)如果兩棵二叉樹都為空,返回真 (2)

用Java程式碼寫一個判斷是否相同

判斷兩個二叉樹是否相同,我覺得應該從三個方面來判斷: 1、若兩個二叉樹都是空樹,則返回true,可認為兩個二叉樹相同; 2、若兩個二叉樹一個為空,一個不為空樹,則兩個二叉樹不相同,返回false; 3、若兩個二叉樹都不為空樹,則判斷兩個節點所指的值是否相同,若相同,則用遞迴

007-100-判斷是否相等 Same Tree

Question Given two binary trees, write a function to check if they are the same or not. Two binary trees are considered the same

LeetCode 617. Merge Two Binary Trees (合併)

原題 Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the oth

Leetcode#100. Same Tree(判斷相同)

題目 Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are

LeetCode--Same Tree(判斷是否相同)Python

題目: 給定兩個二叉樹,判斷這兩個二叉樹是否完全相同。 解題思路: 直接通過中序遍歷、前序遍歷或者後續遍歷遍歷這兩棵二叉樹,得到兩個list結果,判斷這兩個list是否相同,相同返回True,否則返回False。需要注意考慮葉子節點的情況。 程式碼(Python): #

LeetCode刷題之三:判斷是否相同

題目為: Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are str

[leetcode]Same Tree(判斷是否相等 C語言實現)

Same Tree Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if th