一、题目:
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
二、思路:
就是找二叉树的高度,用递归方法和非递归方法
三、题解:
递归方法:
(c++实现)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == NULL)
return 0;
int left = maxDepth(root->left);
int right = maxDepth(root->right);
return (left>right?left:right)+1;
}
};
非递归方法(python实现)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def maxDepth(self, root: TreeNode) -> int:
queue = [(root,0)] #初始化,里面放元组
while(queue):
node,depth = queue.pop(0) # 返回的不是元组(root,0),而是两个元素
if node:
queue.append((node.left,depth+1))
queue.append((node.right,depth+1))
#queue.extend([(node.left,depth+1),(node.right,depth+1)])
else:
return depth
四、其他答案: