這道題的遞迴比迭代要難寫,recursion是一道樹上帶回溯,iteration幾乎套層次遍歷即可。
說白了就是要找到深度最大的葉子節點
?如何保證深度最大的就是最左的?——使用前序遍歷
?為什麼使用的是前序遍歷而不是更傾向於左邊的中序遍歷
前序遍歷中最先訪問到的就是最左邊的葉子節點。
我們對每個結點的操作是:如果他是葉子節點,則更新深度,否則就繼續往下走。
class solution
private void tr**ersal(treenode root, int depth)
}if(root.left != null) tr**ersal(root.left, depth+1);
if(root.right != null) tr**ersal(root.right, depth+1);
}}
用乙個值來表示每一層最左邊的值即可,遍歷結束該值儲存的就是最後一層最左邊的值,即題目所求
class solution
}return ans;
}}
LeetCode 513 找樹左下角的值
題目描述 給定乙個二叉樹,在樹的最後一行找到最左邊的值。示例 1 輸入 2 1 3 輸出 1 示例 2 輸入 1 2 3 4 5 6 7 輸出 7 注意 您可以假設樹 即給定的根節點 不為 null。思路1 此題目第一眼看到就想起了二叉樹的右檢視。這個題跟此題類似,可以按照二叉樹的左檢視來做,最後只...
leetcode513 找樹左下角的值
給定乙個二叉樹,在樹的最後一行找到最左邊的值。示例 1 輸入 2 1 3 輸出 1 示例 2 輸入 1 2 3 4 5 6 7 輸出 7 注意 您可以假設樹 即給定的根節點 不為 null。在正常的二叉樹層次遍歷中,從左到右遍歷,最後乙個輸出的節點是二叉樹最右下角的節點,那麼每一層從右到左遍歷,則最...
LeetCode 513 找樹左下角的值
給定乙個二叉樹,在樹的最後一行找到最左邊的值。示例 1 輸入 2 1 3 輸出 1示例 2 輸入 1 2 3 4 5 6 7輸出 7我們可以使用層序遍歷的方式來儲存元素,乙個bfs,可以先把右節點加入佇列,然後 最後乙個佇列的結點就是 最左邊的值了 definition for a binary t...