树的算法思想之递归
递归 解题关键: 找出递归关系 找出终止条件 确定返回值 例子 给定一个二叉树,判断它是否是高度平衡的二叉树 。 算法实现: int deep ( struct TreeNode * p ) { //确定出口 if ( p == NULL ) { return 0 ; } //递归关系 int left = 1 + deep ( p -> left ) ; int right = 1 + deep ( p -> right ) ; //确定返回值 return left > right ? left : right ; } bool isBalanced ( struct TreeNode * root ) { //确定出口 if ( root == NULL ) return true ; int ch = abs ( deep ( root -> left ) - deep ( root -> right ) ) ; //递归关系+递归返回值(根据题目具体情况分析) return ch < 2 && isBalanced ( root -> left ) && isBalanced ( root -> right ) ; } 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 算法实现1: int