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

    #include<iostream>
    using namespace std;
    
    struct Node
    {
     char data;
     int nMaxLeft;
     int nMaxRight;
     Node* left;
     Node* right;
    };
    
    int nMaxLen;
    
    int FindMaxLen(Node* pRoot)  //求二叉树中节点的最大距离
    {
     if(pRoot==NULL)return NULL;
     if(pRoot->left==NULL)pRoot->nMaxLeft=0;
     if(pRoot->right==NULL)pRoot->nMaxRight=0;
     if(pRoot->left!=NULL)
     {
      FindMaxLen(pRoot->left);
     }
     if(pRoot->right!=NULL)
     {
      FindMaxLen(pRoot->right);
     }
     //计算左子树最长节点距离
     if(pRoot->left!=NULL)
     {
         int nTempMax=0;
      if(pRoot->left->nMaxLeft>pRoot->left->nMaxRight)
      {
       nTempMax=pRoot->left->nMaxLeft;
      }
      else
      {
       nTempMax=pRoot->left->nMaxRight;
      }
      pRoot->nMaxLeft=nTempMax+1;
     }
     //计算右子树最长节点距离
     if(pRoot->right!=NULL)
     {
         int nTempMax=1;
      if(pRoot->right->nMaxLeft>pRoot->right->nMaxRight)
      {
       nTempMax=pRoot->right->nMaxLeft;
      }
      else
      {
       nTempMax=pRoot->right->nMaxRight;
      }
      pRoot->nMaxRight=nTempMax+1;
     }
     //更新最长距离
     if(pRoot->nMaxLeft+pRoot->nMaxRight > nMaxLen)
     {
      nMaxLen=pRoot->nMaxLeft+pRoot->nMaxRight;
     }
    }
    Node* createTree()  //先根建树
    {
         char ch;
      Node* p;
      cin>>ch;
      if(ch=='#')return NULL;
         p=new Node();
      p->data=ch;
      p->left=createTree();
      p->right=createTree();
      return p;
    }
    int main()
    {
         while(true)
      {
       nMaxLen=0;
          Node* pRoot=createTree(); //先根建树
       FindMaxLen(pRoot);        //求二叉树中节点的最大距离
       cout<<"nMaxLen= "<<nMaxLen<<endl;
      }
      system("pause");
      return 0;
    }
    

      

  • 相关阅读:
    构建之法阅读笔记07
    7-第一阶段SCRUM冲刺
    第一阶段个人冲刺博客第十天
    第一阶段个人冲刺博客第九天
    第九周学习进度博客
    java项目(学习和研究)
    让计算机干活
    os基础
    树和图的一些算法
    java代码理解
  • 原文地址:https://www.cnblogs.com/yanglf/p/2786013.html
Copyright © 2011-2022 走看看