求树的最大深度和最小深度的非递归实现
int long_depth(TreeNode* root)
{
//对于这种东西使用的是队列的方式
deque<TreeNode*> deque_tree;
deque_tree.push_back(root);
int depth = 0;
int thislevel=1;
int nextlevel=0;
while (!deque_tree.empty())
{
TreeNode* temp = deque_tree.front();
deque_tree.pop_front();
--thislevel;
if (temp->left)
{
deque_tree.push_back(temp->left);
++nextlevel;
}
if (temp->right)
{
deque_tree.push_back(temp->right);
++nextlevel;
}
if (thislevel == 0)
{
++depth;
thislevel = nextlevel;
nextlevel = 0;
}
}
return depth;
}
int short_depth(TreeNode* root)
{
//对于这种东西使用的是队列的方式
if (root == NULL)
return 0;
deque<TreeNode*> deque_tree;
deque_tree.push_back(root);
int depth = 0;
int thislevel = 1;
int nextlevel = 0;
while (!deque_tree.empty())
{
TreeNode* temp = deque_tree.front();
deque_tree.pop_front();
--thislevel;
if (temp->left&&temp->right)
{
deque_tree.push_back(temp->left);
deque_tree.push_back(temp->right);
++nextlevel;
++nextlevel;
}
else
{
//++depth;
break;
}
if (thislevel == 0)
{
++depth;
thislevel = nextlevel;
nextlevel = 0;
}
}
return depth;
}
暂时没考虑一些特殊情况比如树的根节点为NULL