精华内容
下载资源
问答
  • 二叉树宽度

    2015-03-30 20:52:41
    二叉树宽度,就是求二叉树某一层上的节点数最多的数。 public static int getHeight(BiNode head) { int deep = 0; if(head != null) { int left = getHeight(head.left); int right = ...

    求二叉树的宽度,就是求二叉树某一层上的节点数最多的数。


    	public static int getHeight(BiNode head)
    	{
    		int deep = 0;
    		if(head != null)
    		{
    			int left = getHeight(head.left);
    			int right = getHeight(head.right);
    			deep = (left>=right)?(left+1):(right+1);
    		}
    		return deep;
    	}
    	public static int getWidth(BiNode head)
    	{
    		if(head == null)
    		{
    			return 0;
    		}
    		
    		int nWidth = 0;
    		int nLastLevelWidth = 0;
    		int nTempLastLevelWidth = 0;
    		int nCurLevelWidth = 0; 
    		
    		Queue<BiNode> myQueue = new LinkedList<Demo.BiNode>();
    		myQueue.add(head);
    		nLastLevelWidth = 1;
    		nWidth = 1;
    		
    		while(!myQueue.isEmpty())
    		{
    			nTempLastLevelWidth = nLastLevelWidth;
    			BiNode tmp = null;
    			while(nTempLastLevelWidth != 0)
    			{
    				tmp = myQueue.peek();
    				myQueue.poll();
    
    				if(tmp.left != null)
    				{
    					myQueue.add(tmp.left);
    				}
    				if(tmp.right != null)
    				{
    					myQueue.add(tmp.right);
    				}
    				nTempLastLevelWidth--;
    			}
    			
    			nCurLevelWidth = myQueue.size();
    			nWidth = nCurLevelWidth>nWidth?nCurLevelWidth:nWidth;
    			nLastLevelWidth = nCurLevelWidth;
    		}
    		return nWidth;
    	}

    参考:http://zhidao.baidu.com/link?url=K1xVilT0OyF_e_FbYr9FVycdq4MBgacNU-1iCOWtGvFJqwb28q1e5j1EJ4QefSy6Qe15ZHD9qV10Bi439AWbuq

    http://zhidao.baidu.com/link?url=K1xVilT0OyF_e_FbYr9FVycdq4MBgacNU-1iCOWtGvFJqwb28q1e5j1EJ4QefSy6Qe15ZHD9qV10Bi439AWbuq

    展开全文
  • 二叉树宽度

    2015-05-08 17:29:36
    二叉树宽度算法 void width(Tree T) //求二叉树宽度 { int w = 0, wmax = 1, last = -1; Tree p; queue q; q.front = q.rear = -1; if(T == NULL) printf("该二叉树宽度为0!\n"); else { q.data[++q....

    求二叉树宽度算法

    void width(Tree T)              //求二叉树宽度
    {
    	int w = 0, wmax = 1, last = -1;
    	Tree p;
    	queue q;
    	q.front = q.rear = -1;
    	if(T == NULL)
    		printf("该二叉树宽度为0!\n");
    	else
    	{
    		q.data[++q.rear] = T;
    		last = q.rear;
    		while(q.front < q.rear)
    		{
    			p = q.data[++q.front];
    			if(p->lchild != NULL)
    				q.data[++q.rear] = p->lchild;
    			if(p->rchild != NULL)
    				q.data[++q.rear] = p->rchild;
    			w++;
    			if(q.front == last)
    			{
    				if(w > wmax)
    					wmax = w;
    				w = 0;
    				last = q.rear;
    			}
    		}
    		printf("该二叉树宽度为%d!\n", wmax);
    	}
    }


    展开全文
  • 二叉树宽度的递归算法

    千次阅读 多人点赞 2019-07-05 08:07:06
    所谓二叉树宽度,就是至每一层节点数多的那一层的节点数 我的算法大致思路是: 开辟一个数组count[二叉树高度],遍历每一个节点,然后根据当前节点所在层次i,则执行count[i]++; 最后遍历完求出最大的count即为二叉树...

    所谓二叉树宽度,就是至每一层节点数多的那一层的节点数
    我的算法大致思路是:

    开辟一个数组count[二叉树高度],遍历每一个节点,然后根据当前节点所在层次i,则执行count[i]++;

    最后遍历完求出最大的count即为二叉树宽度,代码很简单如下

    int  count[100];
    int MAX=-1;
     
    void FindWidth(BitNode T,int k)
    {
        if(T==NULL)  return;
        count[k]++;
        if(MAX<count[k]) MAX=count[k];
        FindWidth(T->lchild,k+1);
        FindWidth(T->rchild,k+1);
    }
     

    --------------------- 
    作者:FightingBa 
    来源:CSDN 
    原文:https://blog.csdn.net/mcb199175mcb/article/details/12031217 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 二叉树宽度优先搜索

    2014-10-09 01:16:28
    二叉树宽度优先搜索( Breadth - first Search )使用du

    二叉树宽度优先搜索( Breadth - first Search )使用队列来进行进行。

    算法步骤:

                    1. 从根节点开始,使根节点入队;

                    2. 当队列不为空,使队头元素出队,打印其结点的数据域,若其有左右孩子,使其左右孩子按顺序入队;

                    3. 队列为空时,已经按照宽度遍历整个二叉树;

    实现代码:

    struct Tnode;
    typedef struct TNode *SearchTree;
    
    struct TNode
    {
        ElementType Element;
        SearchTree Left;
        SearchTree Right;
    };
    
    void bfs( SearchTree T )
    {
        Queue Q;
    
        Q.Enqueue( T ); // Q存储指针,指针指向结点
        while ( !Q.IsEmpty() )
        {
        	SearchTree TmpCell = Q.Dequeue;
    
        	if ( TmpCell->Left != NULL )
        		Q.Enqueue( TmpCell->Left );
        	if ( TmpCell->Right != NULL )
        		Q.Eequeue( TmpCell->Right );
    
        	// 对结点Q进行打印等操作
        }
    }


    展开全文
  • 二叉树宽度和深度

    2017-09-18 12:00:34
    //二叉树宽度 int widthOfBinaryTree(Node *root) {  if(root == NULL)  return 0;  queue nodeQueue;  int maxWidth = i;  nodeQueue.push(root);    while(true)  {  in
  • 二叉树宽度二叉树的每一层中都有一定数量的节点,节点数最多的那一层的节点数叫做二叉树宽度。思路:递归实现。1.每个节点都可以看作根节点2.根节点(任意一个节点)的深度等于它的左子树或右子树深度最大值+13....
  • * 求二叉树中的结点个数、叶子结点个数、某结点层次和二叉树宽度 * 实验目的: * 掌握二叉树遍历算法的应用,熟练使用先序、中序、后序三种递归 * 遍历算法和层次遍历算法进行二叉树问题求解。 * 实验内容: * 设计...
  • package huawei; import java.util.ArrayDeque; import java.util.Queue; public final class Demo { public static class BiNode { public char data; public BiNode left; public BiNode right;...
  • 二叉树宽度的计算

    2017-04-19 20:04:00
    二叉树宽度定义为具有最多结点数的层中包括的结点数。试计算一二叉树的宽度。 #include "stdafx.h" #include<iostream> #include<vector> using namespace std; struct BiNOde { int ...
  • 祝大家感恩节快乐!感恩节,西方传统节日,是美国人民独创的一个节日,也是美国人合家欢聚的节日。今天给大家带来100道必刷算法题,算法题是...二叉树宽度9.二叉树是否对称10.链表m 到n 反转11.一个n 位数,现在可以...
  • 二叉树宽度和高度

    2013-11-11 01:22:31
    二叉树的深度和宽度 // 求二叉树的深度和宽度.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include #include using namespace std; struct BTNode { char m_value; BTNode *m_left; BTNode *...
  • 2.二叉树层次遍历应用之求二叉树宽度 //对所有结点记录层数,通过层次遍历;最后对所有结点统计每一层的结点数,最大即为所求 typedef struct { BTNode *p; int lno; }St; int maxNode(BTNode *b) { St ...
  • 二叉树宽度函数 typedef struct { BTNode *p; int lno; }St; int maxNode(BTNode *b) { St que[maxSize]; int front,rear; int Lno=0,i,j,n,max=0; front=rear=0; BTNode *q; if(b!=NULL) { ++rear;...
  • 二叉树宽度优先遍历

    2013-06-06 08:59:03
    算法竞赛入门经典 6.3.2节,二叉树宽度优先遍历 运用结构体变量。注意在定义函数的时候是环环相扣的。最开始先定义节点的数据类型,然后定义newnode,然后再定义addnode(addnode里面要用到newnode),然后在定义...
  • 思路:实际上是在先序遍历二叉树。递归一次,说明深入了一层。所以,在每次进入递归之时该层节点数++。 int count[MaxSize];//全局数组 int max = -1;全局变量 void width(BitNode T, int k){ if(T==null) return; ...
  • [经典面试题]二叉树宽度

    千次阅读 2015-03-07 10:51:17
    (1)二叉树最大宽度 /*--------------------------------------------- * 日期:2015-03-07 * 作者:SJF0115 * 题目: 二叉树的最大宽度 * 来源:经典面试题 * 博客: --------------------------------------...
  • 半递归求二叉树宽度

    2018-12-11 17:29:21
    int height(Node&amp;amp;lt;int&amp;amp;gt; * root){ if(root ==NULL)return 0; int l = 0;int r = 0; if(root-&amp;amp;gt;L == NULL &amp;amp;amp;&amp;amp;...gt
  • #define MaxSize 15 typedef struct BTNode{ char data; struct BTNode* left; struct BTNode* right; }BTNode; //BFS 模板代码 void level(BTNode* p){ int front,rear; BTNode* que[MaxSize];...= NULL) {

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,396
精华内容 558
关键字:

二叉树宽度