葉子相似的樹

2022-01-10 09:39:12 字數 1274 閱讀 8216

請考慮一顆二叉樹上所有的葉子,這些葉子的值按從左到右的順序排列形成乙個葉值序列。

舉個例子,如上圖所示,給定一顆葉值序列為(6, 7, 4, 9, 8)的樹。

如果有兩顆二叉樹的葉值序列是相同,那麼我們就認為它們是葉相似的。

如果給定的兩個頭結點分別為root1root2的樹是葉相似的,則返回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目標陣列,之後便結束遞迴,如果存在左孩子,那麼便繼續向左遞迴,如果存在右孩子,那麼便繼續向右遞迴,之後便分別對於root1root2的葉子節點置入target1target2陣列,之後比較陣列長度,若不同則直接返回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...