醉汉走路
题目大意
给出一个醉汉的初始位置和要走的步数,然后在每一个位置可以等概率的往左走或者右走,当他走到的位置小于0或者是大于60的时候就会掉下悬崖,问着醉汉不会掉下悬崖的概率。
解题思路
建立一个树结构,每一个节点都有两个子节点,利用树结构来解决。
代码实现
import java.util.*;
class TreeNode {
TreeNode left;
TreeNode right;
int val;
public TreeNode(TreeNode left, TreeNode right, int val) {
this.left = left;
this.right = right;
this.val = val;
}
public TreeNode(int val) {
this.val = val;
}
}
public class Three{
//用于统计概率
public static double countp=0;
public static void SafeP(TreeNode root,int st,double p){
if (root.val>60 || root.val<0) {
countp+=p;
return;
}
if (st<=0 || root==null) return ;
SafeP(root.left,st-1,p*0.5);
SafeP(root.right,st-1,p*0.5);
}
//创建树
public static TreeNode createMyTree(int