比較兩棵樹是否相同(關鍵詞:樹/二叉樹/相同/相等/完全相同)
比較兩棵樹是否相同
實現
def isSameTree(p, q):
if p == None and q == None:
return True
elif p != None and q != None:
return p.val == q.val and isSameTree(p.left, q.left) and isSameTree(p.right, q.right)
else:
return False
參考文獻:
- https://leetcode.com/problems/same-tree/submissions/;
- 這是印象筆記中的筆記,如果是在CSDN手機APP上檢視此部落格,請在印象筆記手機APP中搜索該參考文獻:
- 19 求兩棵樹是否相同。
相關推薦
樹的學習——(遞迴構建二叉樹、遞迴非遞迴前序中序後序遍歷二叉樹、根據前序序列、中序序列構建二叉樹)
前言 最近兩個星期一直都在斷斷續續的學習二叉樹的資料結構,昨晚突然有點融匯貫通的感覺,這裡記錄一下吧 題目要求 給定前序序列,abc##de#g##f###,構建二叉樹,並且用遞迴和非遞迴兩種方法去做前序,中序和後序遍歷 二叉樹的資料結構 #define STACKSI
比較兩棵樹是否相同(關鍵詞:樹/二叉樹/相同/相等/完全相同)
比較兩棵樹是否相同 實現 def isSameTree(p, q): if p == None and q == None: return True elif p != None and q != None: return p.val == q.val and isS
七:重建二叉樹(依據先序遍歷(或者後序遍歷)和中序遍歷重建二叉樹)
off 相同 tree int roo 節點 先序 throw -a 對於一顆二叉樹。能夠依據先序遍歷(或者後序遍歷)和中序遍歷(樹中不含反復的數字)又一次還原出二叉樹。 解析: 1. 先序遍歷序列的第一個元素必然是根節點,能夠由此獲取二叉樹的根節點。 2. 依
劍指Offer(書):重建二叉樹
中序 span 問題 找到 div 節點 left 假設 array 題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,
669. Trim a Binary Search Tree(遞迴修剪二叉樹)
Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that all its elements lies in [L, R] (R >= L). You might n
第六章樹和二叉樹作業1—二叉樹--計算機17級 6-1 求二叉樹高度 (20 分)
6-1 求二叉樹高度 (20 分) 本題要求給定二叉樹的高度。 函式介面定義: int GetHeight( BinTree BT ); 其中BinTree結構定義如下: typedef struct TNode *Position; typedef P
演算法題(三十二):判斷二叉樹是否是平衡二叉樹
7. 判斷是否是BST 題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 分析 可以用遞迴的方法,從下向上遍歷各個結點(後序遍歷),如果結點是滿足BST的條件則返回該結點的高度,如果不滿足則直接停止遍歷並返回false。 程式碼 public cl
劍指offer程式設計題(JAVA實現)——第4題:重建二叉樹
/** * 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序 * 遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列 * {4,7,2,1,5,3,8,6},則重建二叉樹並返回。 *
劍指offer系列(4):重建二叉樹
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。 樣例分析 例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回{1,2,
單鏈表反轉(關鍵詞:連結串列/單鏈表/反轉/逆轉/逆置)
單鏈表反轉 一點解釋 可以拿 1 種最簡單的情況為例,2 個結點的單鏈表,紙筆畫示意圖,程式碼很好理解,不做詳細解釋了。 實現方法 1 def reverseList(head): prev = None while head is not None: cur
面試題55(二):平衡二叉樹
一、題目 輸入一棵二叉樹的根結點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。 二、關鍵 三、解釋 四、程式碼 #include <cstdio> #include "..\Utilities\
資料結構——二叉樹:基本二叉樹(C++)
內容概要: 二叉樹相關概念 簡單二叉樹模板類的實現:二叉樹的遍歷、計算高度、計算節點數目 注意事項 一、二叉樹相關概念: 第一部分: 節點(node),根節點(root),左子樹(left subtree),右子樹(right suntree),子節點
資料結構-線索二叉樹(後序線索二叉樹及遍歷)
後序線索二叉樹 線索化的概念及相關圖解 在上一篇中詳細介紹了中序線索二叉樹,線索化圖解及相關概念都放在那篇部落格啦,放個傳送門 線索二叉樹詳細解析(含圖解):傳送門 包括還有先序線索二叉樹:傳送門 後序線索二叉樹 (1)後序線索二叉樹的構造
劍指offer程式設計題(JAVA實現)——第39題:平衡二叉樹
github https://github.com/JasonZhangCauc/JZOffer 劍指offer程式設計題(JAVA實現)——第39題:平衡二叉樹 題目描述
Java程式碼 給出一個二叉樹和一個數,判斷該二叉樹是否存在一個從根節點到葉節點的和與給出的數相同
從菜鳥到大牛一定要戒驕戒躁,沉下心來慢慢打磨自己! 這個題目的演算法思想分為三種情況: case1樹為空時,返回false case2 樹只有一個根節點 case3 正常情況下的樹 Java程式碼如下: /** * Definition for a binary tree
給定一棵二叉樹,和一個數值。求二叉樹的路徑和等於給定值的所有路徑
判斷是否有路徑 bool hasPathSum(TreeNode *root, int sum) { if(root==NULL) return false; sum-=root->val;
劍指offer32(1,2,3)--從上往下列印二叉樹,分行從上往下列印二叉樹,按之字形順序列印二叉樹
從上往下列印二叉樹 題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右列印。 思路: 層序遍歷,用到佇列 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;
leetcode 101. Symmetric Tree(C語言,二叉樹,遞迴,判對稱性)30
貼原題: 解析: 本題是給出一個二叉樹,讓判斷其是否左右對稱。 我的思路就是直接遞迴。新建一個遞迴函式,引數是其左右孩子節點,若兩個節點都存在且值相等則對稱,繼續比較其各自的左右孩子。
劍指Offer——樹:把二叉樹列印成多行(二叉樹層序遍歷)
對於二叉樹的最好的解決辦法就是遞迴。遍歷方法無外乎先序遍歷,中序遍歷,後序遍歷方法以及層序遍歷方法。這裡給大家安利一個關於樹的面試題的連結,博主walkinginthewind比較全面且詳細的介紹了二叉樹相關的面試題:對於層序遍歷,最好的方法就是用佇列記錄遍歷節點的值,按層列
劍指offer面試題7:重建二叉樹(Java實現)
題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹並返回。 思路:可以把二叉樹分為左右子樹分別構建,前序