字节跳动面试题:求一颗二叉树所有子节点的父节点之和
程序员文章站
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;
}
};
写到这里就差不多吧基本思路写出来了,这是我目前能想到的最简单的思路了,现在想想面试的时候面试官看我没有写出来这个代码,就降低了难度,问我所有子节点的和,其实思路和这个差不多,也是递归遍历左右节点,然后判断左右节点的左右孩子是否为空,然后累加,面试官也是在引导我的思路,可惜呀。
上一篇: Python零基础入门5(数据类型)
下一篇: python入门