计算二叉树的最短路径,一层一层的算。我用的应该算是搜索加剪枝,但是如果有宽度搜索,或许时间更快,但是需要额外的空间。
class Solution { public: int min; void MoveTo(TreeNode *node,int steps) { if(node->left == NULL && node->right == NULL) { if(steps < min) { min = steps; } return; } if(node->left != NULL && steps+1 < min) { MoveTo(node->left,steps+1); } if(node->right != NULL && steps+1 < min) { MoveTo(node->right,steps+1); } } int minDepth(TreeNode *root) { min = 999999999; if(root == NULL) return 0; MoveTo(root,1); return min; } };