题解 | #距离是K的二叉树节点#

距离是K的二叉树节点

http://www.nowcoder.com/practice/e280b9b5aabd42c9b36831e522485622

class Solution {
public:
    unordered_map<int,TreeNode*>parent;
    vector<int>ans;
    TreeNode* t;
    void findParent(TreeNode* root)
    {
        if(root->left)
        {
            parent[root->left->val]=root;
            findParent(root->left);
        }
        if(root->right)
        {
            parent[root->right->val]=root;
            findParent(root->right); 
        }
    }
    void findAns(TreeNode* root,TreeNode* from,int d,int k)
    {
        if(!root)
            return;
        if(d==k)
        {
            ans.emplace_back(root->val);
            return;
        }
        if(root->left!=from)
            findAns(root->left,root,d+1,k);
        if(root->right!=from)
            findAns(root->right,root,d+1,k);
        if(parent[root->val]!=from)
            findAns(parent[root->val],root,d+1,k);
    }
    void findTarget(TreeNode* root,int target)
    {
        if(!root)
            return;
        findTarget(root->left,target);
        findTarget(root->right,target);
        if(root->val==target)
        {
            t=root;
            return;
        }
    }
    vector<int> distanceKnodes(TreeNode* root, int target, int k) {
        findParent(root);
        findTarget(root,target);
        findAns(t,NULL,0,k);
        return ans;
    }
};

全部评论
道歉
点赞 回复 分享
发布于 2023-02-27 14:45 陕西
没有注释呢
点赞 回复 分享
发布于 2022-05-31 13:36

相关推荐

不愿透露姓名的神秘牛友
07-25 17:13
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务