找树左下角的值-513
  FHUfYd9S4EP5 3天前 24 0

题目描述

给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

解题思路

这道题用层次遍历的方式来说是比较简单的,用递归的话如果我们看别人的精简代码很难看出其中隐藏的细节,这里递归遍历其实我们用到了回溯的思想,我们直接采用前序遍历的方式(其实三种遍历方式都是一样的),定义一个max_depth作为参考值记录当前遍历子树的最大深度,如果我们遍历到了叶子节点而且其深度大于这个max_depth我们就可以进行赋值操作,反之则不用,因为深度没有它大的话肯定不是最后一层的叶子节点,没有我们上一次遍历子树的层次高,就无需进行赋值操作

代码实例

层次

import java.util.*; 
class Solution {
    public int findBottomLeftValue(TreeNode root) {
        Deque<TreeNode> deque=new LinkedList<>();
        deque.add(root);
        List<Integer> result=new ArrayList<>();
        // result.add(root.val);
        while(!deque.isEmpty()){
            int size=deque.size();
            for(int i=0;i<size;i++){
                TreeNode temp=deque.pollFirst();
                result.add(temp.val);
                if(temp.right!=null){
                    deque.addLast(temp.right);
                }
                if(temp.left!=null){
                    deque.addLast(temp.left);
                }
            }

        }

        return result.get(result.size()-1);


    }
}

递归

import java.util.*;

class Solution {
    int max_depth=Integer.MIN_VALUE;
    int result=0;
    public int findBottomLeftValue(TreeNode root) {
    
        bianli(root,1);
        return result;
    }

    public void bianli(TreeNode root,int depth) {
        if(root.left==null && root.right==null){
            if(depth>max_depth){
                max_depth=depth;
                result=root.val;
            }
        }
        
        if(root.left!=null){
            bianli(root.left,++depth);
        // 回溯的思想,我们要减去depth然后回溯到根节点然后再从1开始去遍历我们的右子树
            depth--;
        }

        if(root.right!=null){
            bianli(root.right,++depth);
            depth--;
        }

    }
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 3天前 0

暂无评论

推荐阅读
  VGxawBTN4xmE   13小时前   10   0   0 Java
  FHUfYd9S4EP5   3天前   23   0   0 Java
  sSh3rBaiME5f   4天前   31   0   0 Java
  qCe06rFCa8NK   3天前   18   0   0 Java
  ZTo294hNoDcA   3天前   25   0   0 Java
  FHUfYd9S4EP5   3天前   19   0   0 Java
  QGiRIwDaZAe8   4天前   22   0   0 Java
FHUfYd9S4EP5