思路 简单的深度遍历,结合了二叉树后序遍历的思想。先不断向下遍历,向下遍历时先向左遍历(保证得到的最深的值是在最左边),如果发现遍历的深度大于已有的深度就把最大深度改为当前深度,值也修改。
class Solution {
int val;
int deep = -1;
public void dfs(TreeNode root,int depth){
if(root == null)return;
dfs(root.left,depth+1);//向左遍历
dfs(root.right,depth+1);//向右遍历
if(depth > deep){//代码运行到这里时该节点的子节点已经全部遍历过了,不理解可以看看二叉树的后序遍历,核心就是回溯
deep = depth;//修改深度
val = root.val;//修改值
}
}
public int findBottomLeftValue(TreeNode root) {
dfs(root,0);
return val;
}
}