zoukankan      html  css  js  c++  java
  • 非递归算法求二叉树的深度

    原理:
    1.采用层次遍历的方法,
    2.设置变量level记录当前结点所在层数,
    3.设置变量last指向当前层最右结点,
    4.每次层次遍历出队时,与last指针作比较,若两者相等,那么层数加1,
    并让last指向下一层最右结点,至少遍历完成.level的值即为二叉树的高度

    #include <stdio.h>
    #include <stdlib.h>
    typedef 1000 Maxsize;
    typedef struct BiTree{
    	int data;
    	struct BiTree *rchild,*lchild;
    };
    
    int Btdepth(BiTree T){
    	if (!T)
    	{
    		return 0; //树空,高度为0
    	}
    	int front=-1,rear=-1;
    	int last=0,level=0; //last指向下一层第一个结点的位置
    	BiTree Q[Maxsize],p; //设置队列Q
    	Q[++rear] = T; //将根结点入队
    	while(front<rear){ //队不空,则循环
    		p = Q[++front]; //队列元素出队,暨正在访问的元素
    		if (p.lchild)
    		{
    			Q[++rear] = p.lchild; //左孩子入队,
    		}
    		if (p.rchild)
    		{
    			Q[++rear] = p.rchild;//右孩子入队
    		}
    		if (front==last)//处理该层的最右结点
    		{
    			level++; //层数加一
    			last = rear; //指向下一层
    		}
    		
    	}
    	return level;
    }
    
  • 相关阅读:
    CSS3选择器
    在sublimen中整理CSS代码及其兼容性问题
    sublime 插件安装
    sublime 使用快捷键
    HTML5标签选择,图文混排使用dl dt dd
    HTML布局
    分页器
    Django ==> Form 组件
    Django ==> ModelAdmin
    前端 ==> Ajax
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781671.html
Copyright © 2011-2022 走看看