請考慮一顆二叉樹上所有的葉子,這些葉子的值按從左到右的順序排列形成乙個葉值序列。
舉個例子,如上圖所示,給定一顆葉值序列為(6, 7, 4, 9, 8)
的樹。
如果有兩顆二叉樹的葉值序列是相同,那麼我們就認為它們是葉相似的。
如果給定的兩個頭結點分別為root1
和root2
的樹是葉相似的,則返回true
;否則返回false
。
/**
,如果當前節點為* definition for a binary tree node.
* function treenode(val)
*//**
* @param root1
* @param root2
* @return
*/var leafsimilar = function(root1, root2)
if(root.left) dfs(root.left, target);
if(root.right) dfs(root.right, target);
}var target1 = ;
var target2 = ;
dfs(root1, target1);
dfs(root2, target2);
var n1 = target1.length;
var n2 = target2.length;
if(n1 !== n2) return false;
for(let i=0;i對於兩棵二叉樹,首先定義二叉樹深度遞迴遍歷,從左至右獲取所有葉子節點,之後進行比較判斷所有的葉子是否相同,從而判斷這兩棵樹是否是葉相似的。首先定義深度遞迴遍歷函式dfs
null
,那麼就不在向下遞迴,如果不存在左節點有葉節點,那麼就認為當前節點是葉節點,然後將其推入target
目標陣列,之後便結束遞迴,如果存在左孩子,那麼便繼續向左遞迴,如果存在右孩子,那麼便繼續向右遞迴,之後便分別對於root1
與root2
的葉子節點置入target1
與target2
陣列,之後比較陣列長度,若不同則直接返回false
,若相同則按每個值進行比較,不同直接返回false
,全部相同則在最後返回true
。
葉子相似的樹
考慮乙個二叉樹的所有葉子。這些葉子的值按從左到右的順序排列形成乙個 葉值序列 沒有圖 只有我手畫的草圖 舉個例子,給定乙個如上圖所示的樹,其葉值序列為 6,7,4,9,8 如果兩個二叉樹的葉值序列相同,我們就認為它們是 葉相似的。如果給定的兩個頭結點分別為root1和root2的樹是葉相似的,返回t...
葉子相似的樹
題目 葉子相似的樹 力扣 872 請考慮一顆二叉樹上所有的葉子,這些葉子的值按從左到右的順序排列形成乙個葉值序列 如果有兩顆二叉樹的葉值序列是相同,那麼我們就認為它們是 葉相似 的。如果給定的兩個頭結點分別為 root1 和 root2 的樹是葉相似的,則返回 true 否則返回 false 實現 ...
872 葉子相似的樹
請考慮一顆二叉樹上所有的葉子,這些葉子的值按從左到右的順序排列形成乙個 葉值序列 舉個例子,如上圖所示,給定一顆葉值序列為 6,7,4,9,8 的樹。如果有兩顆二叉樹的葉值序列是相同,那麼我們就認為它們是 葉相似 的。如果給定的兩個頭結點分別為 root1 和 root2 的樹是葉相似的,則返回 t...