Amazon OA2准备——bst找最小路径

本文针对一道关于二叉查找树(BST)的笔试题进行解析,介绍如何寻找从根节点到叶子节点的路径中节点值之和最小的路径,并提供了一种解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新

这道题我实际遇见了,还真是bst

题目中给的两个样例是

   10

  /    \

5    15

        7

      /    \

   3       10

  /        /   \

1        8   12


笔试的时候慌了一下,其实如上的题目一个while就解决了,我真的不知道自己在递归个什么劲儿。

顺便注意,只能写一个function。我之前写的算法是有问题的,我多给了一个参数。在笔试的时候我就自己卡在这个问题上了。

=====================================

先来看看bst定义.

二叉查找树英语Binary Search Tree),也称二叉搜索树、有序二叉树(英语ordered binary tree),排序二叉树(英语sorted binary tree),是指一棵空树或者具有下列性质的二叉树

  1. 若任意节点的左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;
  2. 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  3. 任意节点的左、右子树也分别为二叉查找树。
  4. 没有键值相等的节点(英语no duplicate nodes)。

小哥说是给出树和root,从root到leaves权值最小的路径。返回root到所有leave中的最短路径长度。权值指每个节点的value。


那不就是直接全部左边吗。。。

不过姑且还是写了一个。如果树真的是bst,我都无力吐槽了。


在我的假设中,可爱的小树长成这样。也不管什么平衡什么的了,是棵树就好了:

          1  
        /    \  
      2      3  
     /  \       \  
   4  5        6 

 /

20


	private static int FindShortestWay(node root, int route) {
		if(root!=null)
		{
			route += root.val; 
			FindShortestWay(root.left,route);
			FindShortestWay(root.right,route);
			
			if(root.left == null && root.right == null)
			{
				if(min > route)
				{
					min = route;
				}
			}
		}
		return min;
	}

对了,其实应该是要返回最小路径的,也就是说,应该要返回一个int。


纠结了一晚上这个问题,想找找其他人的面经里面对这道题的描述,也没有找到,所以这道题就让它随风吧。不如好好复习一下树的遍历。

想测试一下不如去leetcode刷一下这道题可能还比较有意义:Binary Tree Maximum Path Sum


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值