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

    2017-12-14 14:53:26
    二叉树高度 二叉树高度 二叉树高度 二叉树高度 二叉树高度
  • PTA 求二叉树高度

    千次阅读 2018-06-12 02:45:47
    6-1 求二叉树高度 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ Element...

    6-1 求二叉树高度

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

    函数接口定义:

    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

    Code:

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

    求二叉树高度 (20 分)

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

    函数接口定义:

    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 Lhigh=0,Rhigh=0;
        if(BT==NULL)
        {
            return 0;
        }
        else{
            Lhigh=GetHeight(BT->Left);
            Rhigh=GetHeight(BT->Right);
            return (Lhigh>Rhigh?Lhigh:Rhigh)+1;
        }
    }

    展开全文
  • 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语言求二叉树高度

    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.

    二叉树的高度定义为任何叶节点距根节点的最大深度。 也就是说,它是从根节点到任何叶节点的最长路径的长度。

    Let us consider the below Binary Tree.

    让我们考虑下面的二叉树。

    Binary Tree Ht
    Binary Tree Ht
    二叉树Ht

    Since the leaf nodes corresponding to the maximum depth are 40 and 50, to find the height, we simply find the number of edges from the root node to either one of these two nodes, which is 3.

    由于对应于最大深度的叶节点是4050 ,为了找到高度,我们只需找到从根节点到这两个节点之一的边数,即3。

    Now that we know what the height of a Binary tree signifies, we shall now construct an algorithm to find the height of any Binary Tree.

    现在我们知道二叉树的高度表示什么,现在我们将构造一个算法来查找任何二叉树的高度。

    在C ++中查找二叉树的高度的逻辑 (Logic for finding the Height of Binary Tree in C++)

    Let us now decide the logic behind finding the height and write our pseudo code first.

    现在让我们决定寻找高度的背后逻辑,并首先编写伪代码。

    We shall use recursion on the tree, to find the height. (Refer to the Wikipedia article for the concepts)

    我们将在树上使用递归来找到高度。 (有关概念,请参阅Wikipedia文章

    Since the height of the tree is defined as the largest path from the root to a leaf, we can recursively compute the height of the left and right sub-trees.

    由于树的高度定义为从根到叶的最大路径,因此我们可以递归计算左和右子树的高度。

    We can apply the definition of the height on the sub-trees now.

    我们现在可以在子树上应用高度的定义。

    We observe that it is the maximum between the left and the right sub-trees and then add one.

    我们观察到它是左右子树之间的最大值,然后加一。

    Since the height of the tree is the maximum height of the sub-tree + 1, we keep doing this, until the sub-tree becomes NULL, and it’s height is 0.

    由于树的高度是子树的最大高度+ 1 ,因此我们一直这样做,直到子树变为NULL ,并且其高度为0。

    At this point, our function will finally terminate, and

    至此,我们的功能将最终终止,并且

    Let’s write the function tree_height() that computes the height.

    让我们写一个函数tree_height()来计算高度。

    
    // Find height of a tree, defined by the root node
    int tree_height(Node* root) {
        if (root == NULL) 
            return 0;
        else {
            // Find the height of left, right subtrees
            left_height = tree_height(root->left);
            right_height = tree_height(root->right);
             
            // Find max(subtree_height) + 1 to get the height of the tree
            return max(left_height, right_height) + 1;
    }
    

    Line #3 evaluates the terminating condition, when the sub-tree size is 0, or when the root node is NULL.

    第3行评估子树大小为0或根节点为NULL时的终止条件。

    Lines 7 and 8 recursively find the height of the left and right sub-trees.

    第7和8行递归地找到左和右子树的高度。

    And finally, Line 11 returns the maximum among the two, returning the height of the tree.

    最后,第11行返回两者中的最大值,并返回树的高度。

    用C / C ++实现 ( Implementation in C/C++)

    The below is a complete program showing how the Binary Tree is constructed, and then shows the logic for finding the height in tree_height().

    下面是一个完整的程序,显示了如何构造二叉树,然后显示了在tree_height()查找高度的逻辑。

    
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Node Node;
    
    // Define the Tree Node here
    struct Node {
        int value;
        // Pointers to the left and right children
        Node* left, *right;
    };
    
    
    Node* init_tree(int data) {
        // Creates the tree and returns the
        // root node
        Node* root = (Node*) malloc (sizeof(Node));
        root->left = root->right = NULL;
        root->value = data;
        return root;
    }
    
    Node* create_node(int data) {
        // Creates a new node
        Node* node = (Node*) malloc (sizeof(Node));
        node->value = data;
        node->left = node->right = NULL;
        return node;
    }
    
    void free_tree(Node* root) {
        // Deallocates memory corresponding
        // to every node in the tree.
        Node* temp = root;
        if (!temp)
            return;
        free_tree(temp->left);
        free_tree(temp->right);
        if (!temp->left && !temp->right) {
            free(temp);
            return;
        }
    }
    
    int tree_height(Node* root) {
        // Get the height of the tree
        if (!root)
            return 0;
        else {
            // Find the height of both subtrees
            // and use the larger one
            int left_height = tree_height(root->left);
            int right_height = tree_height(root->right);
            if (left_height >= right_height)
                return left_height + 1;
            else
                return right_height + 1;
        }
    }
    
    int main() {
        // Program to demonstrate finding the height of a Binary Tree
    
        // Create the root node having a value of 10
        Node* root = init_tree(10);
        
        // Insert nodes onto the tree
        root->left = create_node(20);
        root->right = create_node(30);
        root->left->left = create_node(40);
        root->left->right = create_node(50);
    
        // Find the height of the tree
        int height = tree_height(root);
        printf("Height of the Binary Tree: %d\n", height);
    
        // Free the tree!
        free_tree(root);
        return 0;
    }
    


    翻译自: https://www.journaldev.com/34979/height-of-a-binary-tree-in-c-plus-plus

    c语言求二叉树高度

    展开全文
  • PTA6-8 求二叉树高度

    2019-12-22 14:38:24
    PTA6-8 求二叉树高度 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ Element...

    PTA6-8 求二叉树高度

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

    函数接口定义:

    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

    AC代码:

    //利用后序遍历思想
    int GetHeight(BinTree BT)
    {
       int HL,HR,MAXH;
       if(BT)
       {
          HL=GetHeight(BT->Left);
          HR=GetHeight(BT->Right);
          MAXH=(HL>HR)?HL:HR;
          return (MAXH+1);
       }
       else
          return 0;
    }
    
    展开全文
  • 6-8 求二叉树高度 (20分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 6-1 求二叉树高度(20 分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode...
  • 4-8 求二叉树高度

    万次阅读 2016-11-02 15:41:00
    4-8 求二叉树高度 (20分) 本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT ); 其中BinTree结构定义如下:typedef struct TNode *Position; typedef Position BinTree; struct TNode{ Element...
  • 6-1 求二叉树高度 (20 分)

    千次阅读 2018-11-22 01:30:38
    6-1 求二叉树高度 (20 分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 非递归求二叉树高度

    2021-03-26 10:28:15
    题目:假设二叉树采用二叉链表存储结构,设计一个非递归算法求二叉树高度 分析: 若要采用非递归的方式来求得二叉树高度,我们采用层次遍历是最合适的,因为这一层一层的不就很好数吗哈哈。具体实现: 这里...
  • 利用层次遍历非递归求二叉树高度

    万次阅读 多人点赞 2016-09-30 17:47:42
    利用层次遍历非递归求二叉树高度主要的思想是:一层一层地出队列 — 在我们每次访问完一层时,这时队列中存储的刚好是下一层的所有元素。所以在下一次循环开始时,首先记录该层的元素个数,一次性访问完这一层的所有...
  • 4-12 求二叉树高度 (10分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 以二叉链表作存储结构,设计求二叉树高度的算法。
  • 4-8 求二叉树高度 (20分)

    千次阅读 2016-08-26 07:33:23
    4-8 求二叉树高度 (20分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中 BinTree 结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode...
  • 求二叉树高度PTA

    2019-05-06 21:37:07
    本题要求给定二叉树高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ElementType Data; BinTree ...
  • 6-2 求二叉树高度 (20 分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 标题6-8 求二叉树高度 (20分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 根据上一篇二叉树的各种遍历方法,本篇...1、求二叉树高度 递归求解: /*递归求二叉树高度*/ int Btdeep(BiTree T){ if(T == NULL) return 0; int ldeep = Btdeep(T->lchild); int rdeep = Btdeep(T->rchild);
  • 6-1 求二叉树高度(20 分)

    万次阅读 2018-04-03 09:39:34
    6-1 求二叉树高度(20 分)本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT ); 其中BinTree结构定义如下:typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 6-2 求二叉树高度 (20分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 6-8 求二叉树高度 (20分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 4-12 求二叉树高度 (10 分)

    千次阅读 2019-10-23 12:33:12
    4-12求二叉树高度(10分) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ...
  • 本题要求给定二叉树高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ElementType Data; BinTree ...
  • 一棵二叉树T的高度 int bt_Height(BiTNode *T) { if(T==NULL) return 0; else if(T->lchild==NULL&&t->rchild==NULL) return 1; else retrun 1+max(bt_Height(T->lchild),bt-Height(T-&...
  • 6-9 求二叉树高度(20 point(s))

    千次阅读 2017-11-02 08:40:39
    6-9 求二叉树高度(20 point(s)) 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,451
精华内容 24,580
关键字:

求二叉树高度