博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
513. Find Bottom Left Tree Value(python+cpp)
阅读量:3705 次
发布时间:2019-05-21

本文共 3220 字,大约阅读时间需要 10 分钟。

题目:

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.

解释:

返回二叉树的最底层的最左边的元素的值。
解法1:
bfs与层序遍历类似
解法2:
right 2 left bfs 返回最后一个结点的val,和解法1本质上还是一样的
解法1,python代码:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def findBottomLeftValue(self, root):        """        :type root: TreeNode        :rtype: int        """        queue=[]        queue.append(root)        ans=0        while queue:            layer_number=len(queue)            for i in xrange(layer_number):                node=queue.pop(0)                if i==0:                    ans=node.val                if node.left:                    queue.append(node.left)                if node.right:                    queue.append(node.right)        return ans

c++代码:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */#include
using namespace std;class Solution {
public: int findBottomLeftValue(TreeNode* root) {
queue
_queue; _queue.push(root); TreeNode* node=NULL; while (!_queue.empty()) {
int _len=_queue.size(); for (int i=0;i<_len;i++) {
TreeNode* tmp=_queue.front(); _queue.pop(); if(i==0) node=tmp; if(tmp->left) _queue.push(tmp->left); if(tmp->right) _queue.push(tmp->right); } } return node->val; }};

解法2,python代码:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def findBottomLeftValue(self, root):        """        :type root: TreeNode        :rtype: int        """        queue=[]        queue.append(root)        node=None        while queue:            node=queue.pop(0)            if node.right!=None:                queue.append(node.right)            if node.left!=None:                queue.append(node.left)        return node.val

c++代码:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */#include
using namespace std;class Solution {
public: int findBottomLeftValue(TreeNode* root) {
queue
_queue; _queue.push(root); TreeNode* node=NULL; while (!_queue.empty()) {
node=_queue.front(); _queue.pop(); if(node->right) _queue.push(node->right); if(node->left) _queue.push(node->left); } return node->val; }};

总结:

转载地址:http://aglcn.baihongyu.com/

你可能感兴趣的文章
Tomcat 容器与servlet的交互原理
查看>>
Mybatis中集合总结
查看>>
多线程基础之AQS
查看>>
NoSQL综述
查看>>
Linux脑图整理
查看>>
数据结构
查看>>
Redis 的RDB持久化
查看>>
Intellij IDEA-Debug断点调试
查看>>
Mybatis 中#{} 和${}的区别
查看>>
Spring和SpringBoot的区别
查看>>
JAVA笔记第三天
查看>>
java实现单链表的添加和遍历功能
查看>>
@mapper
查看>>
mapper
查看>>
Controller层
查看>>
导航栏错误
查看>>
Controller ----Service ----Mapper
查看>>
Cache 缓存处理
查看>>
关于Redis闪退
查看>>
Redis cuowu
查看>>