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

  • 相关阅读:
    js的同步与异步
    单体应用SSM
    Spring 事务管理简介
    Linux
    Docker
    spring Cloud Netflix
    平台即服务
    MySQL InnoDB 索引组织表 & 主键作用
    Innodb Double Write
    Laravel 5.6: Specified key was too long error
  • 原文地址:https://www.cnblogs.com/freewater/p/2592099.html
Copyright © 2011-2022 走看看