添加 0110.平衡二叉树.md C语言迭代法注释

This commit is contained in:
ArthurP
2021-11-06 10:51:37 +01:00
parent 18ba708849
commit a100480879

View File

@ -670,26 +670,35 @@ bool isBalanced(struct TreeNode* root) {
```c
//计算结点深度
int getDepth(struct TreeNode* node) {
//开辟栈空间
struct TreeNode** stack = (struct TreeNode**)malloc(sizeof(struct TreeNode*) * 10000);
int stackTop = 0;
//若传入结点存在将其入栈。若不存在函数直接返回0
if(node)
stack[stackTop++] = node;
int result = 0;
int depth = 0;
//当栈中有元素时,进行迭代遍历
while(stackTop) {
//取出栈顶元素
struct TreeNode* tempNode = stack[--stackTop];
//若栈顶元素非NULL则将深度+1
if(tempNode) {
depth++;
//将栈顶元素再次入栈添加NULL表示此结点已被遍历
stack[stackTop++] = tempNode;
stack[stackTop++] = NULL;
//若栈顶元素有左右孩子,则将孩子结点入栈
if(tempNode->left)
stack[stackTop++] = tempNode->left;
if(tempNode->right)
stack[stackTop++] = tempNode->right;
//更新结果
result = result > depth ? result : depth;
}
else {
//若为NULL则代表当前结点已被遍历深度-1
tempNode = stack[--stackTop];
depth--;
}