本文主要是介绍LeetCode Find Bottom Left Tree Value,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Given a binary tree, find the leftmost value in the last row of the tree.
Example 1:
Input:2/ \1 3Output: 1
Example 2:
Input:1/ \2 3/ / \4 5 6/7Output: 7
Note: You may assume the tree (i.e., the given root node) is not NULL.
题解:此题比较简单,是用来求一棵二叉树中最底层中最左边那个节点的值。我考虑先求出这棵树的树高,用递归算法来求解,得到树高后,再层次遍历,遍历到树高的那一层时,直接将最左边的那个节点输出即可。
public class findBottomLeftValue
{public int findBottomLeftValue(TreeNode root){int depth = getMaxDepth(root);if(depth == 1)return root.val;Queue<TreeNode> queue = new LinkedList<>(); //层次遍历queue.add(root);int length = queue.size();int height = 1;int result = 0;while(!queue.isEmpty()){boolean t = false;while(length-- > 0){TreeNode tmp = queue.poll();if(height == depth){result = tmp.val;t = true;break;}if(tmp.left != null)queue.add(tmp.left);if(tmp.right != null)queue.add(tmp.right);}if(t == true)break; //判断是不是最底层的最左边的那个节点height += 1;length = queue.size();}return result;}public int getMaxDepth(TreeNode root) //递归求树高{if(root == null)return 0;else{int left = getMaxDepth(root.left);int right = getMaxDepth(root.right);return 1 + Math.max(left,right);}}
}
这篇关于LeetCode Find Bottom Left Tree Value的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!