• 二叉树知识总结(二)


    二叉树编程练习:

    • 求叶子节点数目
      void leafNum(BiTNode* root, int *num)
      {
          if (root == NULL)
          {
              //递归结束的条件,空树
              return;
          }
          //叶子节点
          if (root->lChild == NULL && root->rChild == NULL)
              (*num)++;
          //遍历左子树
          leafNum(root->lChild, num);
          //遍历右子树
          leafNum(root->rChild, num);
      
      }
    • 求二叉树的高度
      int treeDepth(BiTNode* root) 
      {
          if (root == NULL) return 0;
          //计算左子树的高度
          int left = treeDepth(root->lChild);
          //计算右子树的高度
          int right = treeDepth(root->rChild);
          //求出左右子树比较高的那个
          int max = left > right ? left : right;
      
          return max + 1;
      
      }
    • 拷贝树
      BiTNode* copyTree(BiTNode* root)
      {
          //空树
          if (root == NULL) return NULL;
          //拷贝左子树
          BiTNode* left = copyTree(root->lChild);
          //拷贝右子树
          BiTNode* right = copyTree(root->rChild);
          //创建一个新的节点
          BiTNode* pNew = new BiTNode;
          //初始化
          pNew->data = root->data;
          //指针域
          pNew->lChild = left;
          pNew->rChild = right;
          return pNew;
      }
  • 相关阅读:
    stl测试
    noip2017逛公园
    比赛
    莫队算法
    noi.ac 第五场第六场
    重排DL
    bzoj2870
    异象石(就是sdio宝藏那题)
    Genius ACM
    模板复习
  • 原文地址:https://www.cnblogs.com/Lan-ZC0803/p/9494331.html
Copyright © 2020-2023  润新知