给一棵搜索二叉树,然后给出一个从跟到叶节点的最短的路径之和。

题目: 给一棵搜索二叉树,然后给出一个从跟到叶节点的最短的路径之和。


例如            5

            3            8

     2               6      11

0


那么输出就是5+3+2=10


思路,用动态规划的思想,其实就是普通的得到树的最小深度的变种。


代码如下:

[cpp]  view plain  copy
 
  1. int GetMin(int a, int b)  
  2. {  
  3.     return a < b ? a : b;  
  4. }  
  5.   
  6. //得到搜索二叉树的最短路径  
  7. int GetMinSearchPath(BinaryTreeNode* pRoot)  
  8. {  
  9.     if (pRoot == NULL)  
  10.         return 0;  
  11.     if (pRoot->left == NULL)  
  12.         return GetMinSearchPath(pRoot->right) + pRoot->value;  
  13.     if (pRoot->right == NULL)  
  14.         return GetMinSearchPath(pRoot->left) + pRoot->value;  
  15.   
  16.     return GetMin(GetMinSearchPath(pRoot->left), GetMinSearchPath(pRoot->right)) + pRoot->value;  
  17. }  

你可能感兴趣的:(经验积累题)