• 判断一颗树是否为平衡二叉树


    1. struct BinaryTreeNode  
    2. {  
    3.     int m_Value;  
    4.     BinaryTreeNode* m_pLeft;  
    5.     BinaryTreeNode* m_pRight;  
    6. };  
    7. int height(BinaryTreeNode*node ,bool&balance)
    8. {
    9. if(node==NULL)
    10. {
    11. return 0;}
    12. int R=node->right?height(node->right,balance)+1:0;
    13. if(!balance)
    14. return 0;
    15. int l=node->left?height(node->left,balance)+1:0;
    16. if(!balance)
    17. return 0;
    18. int dif=l-r;
    19. if (dif<=1)
    20. {
    21. return (l>r?l:r)
    22. }
    23. }
    24. bool  isBalancedTree(node *root)
    25. {
    26. bool balance=tree;
    27. if(root)
    28.   treehight(root,balance)
    29. return balance;
    30. }

    //递归:

    1. struct BinaryTreeNode  
    2. {  
    3.     int m_Value;  
    4.     BinaryTreeNode* m_pLeft;  
    5.     BinaryTreeNode* m_pRight;  
    6. };  
    7.   
    8. int TreeDepth(BinaryTreeNode* pRoot)  
    9. {  
    10.     if (pRoot == NULL)  
    11.         return 0;  
    12.   
    13.     int nLeftDepth = TreeDepth(pRoot->m_pLeft);  
    14.     int nRightDepth = TreeDepth(pRoot->m_pRight);  
    15.   
    16.     return (nLeftDepth>nRightDepth)?(nLeftDepth+1):(nRightDepth+1);  
    17. }  

    判断该树是否为平衡二叉树

    方法一:调用上述函数求每个节点的左右孩子深度

    [cpp] view plain copy
     
     print?
      1. bool IsBalanced(BinaryTreeNode* pRoot)  
      2. {  
      3.     if(pRoot== NULL)  
      4.         return true;  
      5.   
      6.     int nLeftDepth = TreeDepth(pRoot->m_pLeft);  
      7.     int nRightDepth = TreeDepth(pRoot->m_pRight);  
      8.     int diff = nRightDepth-nLeftDepth;  
      9.   
      10.     if (diff>1 || diff<-1)  
      11.         return false;  
      12.   
      13.     return IsBalanced(pRoot->m_pLeft)&&IsBalanced(pRoot->m_pRight);  
      14. }  
  • 相关阅读:
    LD_DEBUG
    kernel相关前沿技术了解
    awk一次性分别赋值多个value给多个变量,速度对比
    google spanner
    python指定日期后加几天判断
    awk手册
    2017.12.28 现货黄金止盈复盘
    数据库和struts2的拦截器
    类和数据库的扫盲
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接(经典)
  • 原文地址:https://www.cnblogs.com/mmziscoming/p/5779122.html
Copyright © 2020-2023  润新知