LeetCode--513.找树左下角的值(二叉树)

发布时间:2026/5/22 6:23:35

LeetCode--513.找树左下角的值(二叉树) 题目描述给定一个二叉树的根节点root请找出该二叉树的最底层 最左边节点的值。假设二叉树中至少有一个节点。示例 1:输入: root [2,1,3] 输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7提示:二叉树的节点个数的范围是[1,10^4]-231 Node.val 231 - 1代码迭代法/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */classSolution{// 迭代法 层序遍历publicintfindBottomLeftValue(TreeNoderoot){intresultroot.val;if(root.leftnullroot.rightnull)returnresult;// 分层存放QueueTreeNodequenewArrayDeque();que.add(root);while(!que.isEmpty()){intsizeque.size();resultque.peek().val;for(inti0;isize;i){TreeNodenodeque.poll();if(node.left!null)que.add(node.left);if(node.right!null)que.add(node.right);}}returnresult;}}递归法/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */classSolution{publicintresult;publicintmaxDepth0;publicvoidtraverse(TreeNodenode,intdepth){if(nodenull)return;// 前序遍历 先处理中间节点if(depthmaxDepthnode.leftnullnode.rightnull){maxDepthdepth;resultnode.val;return;}// 处理左节点if(node.left!null){depth;traverse(node.left,depth);depth--;//回溯}// 处理右节点if(node.right!null){depth;traverse(node.right,depth);depth--;//回溯}return;}publicintfindBottomLeftValue(TreeNoderoot){traverse(root,1);returnresult;}}

相关新闻