欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字节跳动面试题:求一颗二叉树所有子节点的父节点之和

程序员文章站 2024-01-14 19:55:28
...

有幸收到了字节跳动的实习生面试,虽然没有通过,但是作为第一场面试,我还是能总结出很多经验,对我以后的面试我相信会有很大的帮助。

面试官给的第一道面试题,就是求一颗二叉树的所有子节点的父节点之和

 

字节跳动面试题:求一颗二叉树所有子节点的父节点之和

面试的时候没做出来,我当时已经知道我凉了,所有首先你的数据结构算法知识一定要过关

思路:深度优先探索,然后判断当前节点的左孩子和右孩子其中一个为NULL,累加

判断当前节点的孩子指向的左右孩子为NULL,累加。

class Soltion()

{

       public:

       int SumFather(TreeNode* root)

       {

              if(root == NULL)

              {

                   return -1;

              }     

              int sum = 0;

              TreeNode* left = SumFather(root->leftchild);

              TreeNode* right = SumFather(root->rightchild);

              if(left != NULL && left->leftchild == NULL && left->rightchild == NULL

                || right != NULL&&right->leftchild == NULL&&right->rightchild == NULL)
    
                {

                       sum+=root->data;

                }

                return sum;

       }



};

写到这里就差不多吧基本思路写出来了,这是我目前能想到的最简单的思路了,现在想想面试的时候面试官看我没有写出来这个代码,就降低了难度,问我所有子节点的和,其实思路和这个差不多,也是递归遍历左右节点,然后判断左右节点的左右孩子是否为空,然后累加,面试官也是在引导我的思路,可惜呀。