zoukankan      html  css  js  c++  java
  • 求二叉树中节点的最大距离

    求二叉树中节点的最大距离...
    如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,
    我们姑且定义"距离"为两节点之间边的个数。
    写一个程序,
    求一棵二叉树中相距最远的两个节点之间的距离。
    ANSWER:
    This is interesting... Also recursively, the longest distance between two nodes must be either from root to one leaf, or between two leafs. For the former case, it’s the tree height. For the latter case, it should be the sum of the heights of left and right subtrees of the two leaves’ most least ancestor.
    The first case is also the sum the heights of subtrees, just the height + 0.

    int maxDistance(Node * root) {
    int depth;
    return helper(root, depth);
    }
    int helper(Node * root, int &depth) {
    if (root == NULL) {
    depth = 0; return 0;
    }
    int ld, rd;
    int maxleft = helper(root->left, ld);
    int maxright = helper(root->right, rd);
    depth = max(ld, rd)+1;
    return max(maxleft, max(maxright, ld+rd));
    }

     

    转自:http://blog.csdn.net/v_july_v/article/details/6870251

  • 相关阅读:
    Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
    Django的ORM操作
    RabbitMQ
    CentOS忘记用户名或者密码解决办法
    VUE-es6
    vue基础之命令
    爬虫框架:scrapy
    爬虫高性能相关
    MongoDB
    Beautifulsoup模块
  • 原文地址:https://www.cnblogs.com/freewater/p/2592099.html
Copyright © 2011-2022 走看看