精华内容
下载资源
问答
  • 设置level变量记录层数,last变量记录该层最右结点,在层次遍历出队时,让队列的front指针与last对比,相等证明该层遍历完了,last=rear,同时level+1,直至遍历完成,即队列为空,此时level即为二叉树的高度。...

        思路:设置level变量记录层数,last变量记录该层最右结点,在层次遍历出队时,让队列的front指针与last对比,相等证明该层遍历完了,last=rear,同时level+1,直至遍历完成,即队列为空,此时level即为二叉树的高度。完整代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MaxSize 100
    
    struct tree {
        int data;
        struct tree* left;
        struct tree* right;
    };
    
    typedef struct queue{
        struct tree* numQ[MaxSize];
        int front;
        int rear;
    }Queue;
    
    Queue Q;
    
    void initilize() { //初始化队列
        Q.front = -1;
        Q.rear = -1;
    }
    
    struct tree* creatTree (struct tree* root) {
        int value;
        scanf("%d", &value);
        if (value == -1)
            return NULL;
        root = (struct tree*)malloc(sizeof(struct tree));
        root->data = value;
        printf("请输入%d的左子树:", root->data);
        root->left = creatTree(root->left);
        printf("请输入%d的右子树:", root->data);
        root->right = creatTree(root->right);
        return root;
    }
    int main() {
        printf("请输入头节点:");
        struct tree* root = creatTree(root);
        initilize();  //初始化队列
        int level = 0,last = 0;
        Q.numQ[++Q.rear]=root;//根节点入队
        struct tree *p;
        while(Q.front<Q.rear){
               p=Q.numQ[++Q.front];//出队
               if(p->left)
                 Q.numQ[++Q.rear]=p->left;
               if(p->right)
                 Q.numQ[++Q.rear]=p->right;
               if(Q.front==last){//该层遍历完毕
                 level++;last = Q.rear;//层数+1
               }
        }
        printf("该树的高度为%d\n",level);
        return 0;
    }
    

     

    展开全文
  • 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ElementType Data; BinTree ...

    本题要求给定二叉树的高度。

    函数接口定义:

    int GetHeight( BinTree BT );
    

    其中BinTree结构定义如下:

    typedef struct TNode *Position;
    typedef Position BinTree;
    struct TNode{
        ElementType Data;
        BinTree Left;
        BinTree Right;
    };
    

    要求函数返回给定二叉树BT的高度值。

    裁判测试程序样例:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef char ElementType;
    typedef struct TNode *Position;
    typedef Position BinTree;
    struct TNode{
        ElementType Data;
        BinTree Left;
        BinTree Right;
    };
    
    BinTree CreatBinTree(); /* 实现细节忽略 */
    int GetHeight( BinTree BT );
    
    int main()
    {
        BinTree BT = CreatBinTree();
        printf("%d\n", GetHeight(BT));
        return 0;
    }
    /* 你的代码将被嵌在这里 */
    

    输出样例(对于图中给出的树):

    Alt

    4
    

    实例代码:

    int GetHeight( BinTree BT )
    {
    	int n;
    	if(BT == NULL){
    		return 0;
    	}
    	n = GetHeight(BT->Left) >  GetHeight(BT->Right) ? GetHeight(BT->Left)+1:GetHeight(BT->Right)+1;
    	return n;
    }
    
    展开全文
  • 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ElementType Data; BinTree ...

    本题要求给定二叉树的高度。
    函数接口定义:

    int GetHeight( BinTree BT );

    其中BinTree结构定义如下:

    typedef struct TNode *Position;
    typedef Position BinTree;
    struct TNode{
        ElementType Data;
        BinTree Left;
        BinTree Right;
    };

    要求函数返回给定二叉树BT的高度值。
    裁判测试程序样例:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef char ElementType;
    typedef struct TNode *Position;
    typedef Position BinTree;
    struct TNode{
        ElementType Data;
        BinTree Left;
        BinTree Right;
    };
    
    BinTree CreatBinTree(); /* 实现细节忽略 */
    int GetHeight( BinTree BT );
    
    int main()
    {
        BinTree BT = CreatBinTree();
        printf("%d\n", GetHeight(BT));
        return 0;
    }
    /* 你的代码将被嵌在这里 */

    输出样例(对于图中给出的树):
    在这里插入图片描述

    4

    函数如下:

    int GetHeight(BinTree BT){
     int a,b;
     if(BT==NULL){
      return 0;
     }
     a=GetHeight(BT->Left)+1;
     b=GetHeight(BT->Right)+1;
     return a>b?a:b;//若a>b,返回a,否则返回b。
    }
    展开全文
  • 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉...

    给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

    示例:
    给定有序数组: [-10,-3,0,5,9],

    一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

              0 
             / \ 
           -3   9 
           /     / 
       -10  5 

    以排序数组的中间元素为根节点,递归生成左右子树

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     struct TreeNode *left;
     *     struct TreeNode *right;
     * };
     */
    
    struct TreeNode* createBST(int* nums, int left, int right)
    {
        int mid;
        if (left > right) {
            return NULL;
        }
        mid = ((right - left) >> 1) + left;
        struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
        node->val = nums[mid];
        node->left = createBST(nums, left, mid - 1);
        node->right = createBST(nums, mid + 1, right);
        return node;
    }
    
    struct TreeNode* sortedArrayToBST(int* nums, int numsSize)
    {
        int left = 0;
        int right = numsSize - 1;
        return createBST(nums, left, right);
    }

     

    展开全文
  • AVLC语言实现

    2017-03-27 15:08:29
    这篇博客主要是实现AVL的插入以及删除操作的C语言代码。
  • 递归算法求树高代码 int GetHeight(struct TreeNode * tree) { if(!tree)//空 return 0; int L = GetHeight(tree ->lchild);//求得左子树的高度 int R = GetHeight(tree ->rchild);//求得右子高度 ...
  • 二叉树的部分操作:获取高度,获取结点数,交换每个结点的左、右子 获取二叉树高度 调用函数 Heigt(BinaryTree t) int Heigt(BinaryTree t){ return getHeight(t.root); } int getHeight(BTNode *root){ if...
  • 学习数学的过程中,单位换算贯穿始终。无论是在小升初数学考试中,还是在生活方面,都会涉及单位换算的问题。在小学阶段,主要涉猎的单位换算包括长度、面积、体积、重量、人民币以及时间方面的换算。...
  • AVL——平衡二叉排序性质调整操作AVL...AVL的平衡条件:节点左右子树的高度差<=1 上述条件保证不会退化成链表 高度h的BS节点个数 h<=n<=2h-1 高度为h的AVL节点个数1.5h<=n<=2h-1 low(h) =
  • } int Treedeep(Node *p)//高度 { int deep=0,leftdeep=0,rightdeep=0; if(p==NULL) { return 0; } leftdeep=Treedeep(p->lchild); rightdeep=Treedeep(p->rchild); if(rightdeep>=leftdeep) return rightdeep+...
  • AVLC语言实现

    千次阅读 2014-03-28 23:34:43
    平衡二叉树(Balanced binary tree)是由苏联数学家Adelson-Velskii and Landis于1962年首先提出的,所以又称为AVL。 定义:平衡二叉树或为空,或满足如下性质的二叉树:  (1)本身首先是一棵二叉搜索  (2...
  • c语言求二叉树高度The height of a Binary Tree is defined as the maximum depth of any leaf node from the root node. That is, it is the length of the longest path from the root node to any leaf node. ...
  • 本文用C语言实现了二叉排序(也用到了C++中参数引用特性),并在二叉排序中依次插入了{5,8,2,9,4,3,1,6,7,10},最终生成的二叉树如下图所示。中序遍历该得到有序序列{1,2,3,4,5,6,7,8,9,10} ...
  • avl单旋转c语言Here you will get program for AVL tree in C. 在这里,您将获得C语言中AVL的程序。 An AVL (Adelson-Velskii and Landis) tree is a height balance tree. These trees are binary search ...
  • 二叉搜索C语言

    2017-06-27 11:43:36
    二叉搜索讲解 学习二叉搜索的过程中,对于删除操作中的两个节点都存在的情况进行代码编写时,出现了疑惑,所以我着重讲解一下删除操作代码。 首先进行数据的声明: #include #include typedef int data_type...
  • 利用递归下图的叶子结点数量以及的深度 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //二叉树结点 typedef struct BINARYNODE { char ch; struct BINARYNODE* ...
  • 4.结点的层和高度:结点的层,从第一层开始,依次加1,就是层,高度就是有几层就是高度。 5.有序和无序:不考虑结点位置的前后关系的是无序,反之,考虑结点位置前后关系的是有序。 6.森林:由一个...
  • 1 AVL 在二叉查找中,为了防止某节点处出现左、右儿子深度不平衡的情况,...AVL的平衡条件:每个节点的左子树和右子高度最多差1。 2 单旋、双旋 2.1 单旋 在插入一个节点后,只有那些从插入点到...
  • 文章目录一 前言二 平衡二叉排序阐述1. 二叉排序的不足2. 平衡二叉排序的性质3. 平衡二叉排序效率分析4. 左旋、右旋以及四种失衡类型 一 前言   在了解平衡二叉排序前,请大家务必掌握 BS二叉排序的...
  • C语言求二叉树的高度

    千次阅读 2018-08-27 21:34:50
    利用后续遍历,递归实现 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef char ElementType; typedef struct TNode *Position; typedef Position BinTree;... BinTree Le...
  • 7、打印树状 8、打印叶子节点数 9、打印树高度\n" ); printf ( "输入-1退出\n" ); int num; scanf ( " %d" ,&num); if (num == - 1 ) break ; switch (num) { case 1 : PreOrder(root); ...
  • 二叉排序(二叉查找表的提出: 1)如何在一个大型的数据集合上进行动态查找? (1)顺序查找:不要求元素的有序性,插入、删除的性能是O(1)查找性能是O(n)<需要一个个比较> (2)折半查找:查找性能...
  • LL:LL失去平衡的情况下,可以通过一次旋转让AVL恢复平衡。步骤如下: 1.将根节点的左孩子作为新根节点。 2.将新根节点的右孩子作为原根节点的左孩子。 3.将原根节点作为新根节点的右孩子。 RR:RR失去平衡的情况...
  • 数据结构之 二叉查找1. 二叉查找的定义二叉查找(binary search tree)是一棵二叉树,或称为二叉搜索,可能为空;一棵非空的二叉查找满足一下特征: 每个元素有一个关键字,并且任意两个元素的关键字都...
  • //高度 int GetBiTreeWidth(BiTree ); //宽度 int NodeCnt(BiTree ); //结点个数 int LeafNodeCnt(BiTree ); //叶子结点个数 int OneBranchNodeCnt(BiTree ); //单分支结点的个数 int TwoBranchNodeCnt(BiTree )...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,261
精华内容 4,504
关键字:

求树的高度c语言

c语言 订阅