Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
求一颗二叉树的最小深度。当二叉树只有一个节点时,它的深度是为1.
可以用递归求,求分别递归求左子树与右子树的深度,然后比较深度小的那个加一,值得注意的是,当一个节点,只有左子结点(或只有右子节点)时,这时他并不是一个叶子节点,还需要向下继续求深度,所以右子节点不能返回一个比左子结点求出的深度小的值,就付给他一个较大的值就可以了。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ int minDepth(struct TreeNode* root) { int leftdepth ,rightdepth; if(root == NULL) return 0; if(root->left == NULL&&root->right == NULL) return 1; else{ if(root->left!=NULL) { leftdepth = minDepth(root->left); } else leftdepth = 1000000; if(root->right!=NULL) {rightdepth = minDepth(root->right);} else rightdepth = 1000000; } if(leftdepth>rightdepth) { return rightdepth+1; } else { return leftdepth+1; } }
知识普及
maxheight函数就是求二叉树的左子树与右子树中那个深度最大最大深度多少,minheight函数就是求二叉树的左子树与右子树中那个深度最小最小深度多少,Isbalance函数就是求左子树与右子树的深度差,只要不大于1就是平衡二叉树。 平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。