题解 | #距离是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;
    }
};

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

相关推荐

02-19 21:34
门头沟学院 Java
暴风雨来了:缩成一页,如果找工作的话,最好是要有实习经历,简历也需要改一改,可以私我帮你改一改包装一段实习经历,或者自己在网上找一找冷门的项目,自己包装一下。没有实习经历肯定是不行的。
点赞 评论 收藏
分享
MScoding:你这个实习有一个是当辅导老师,这个和找技术岗没有关系吧?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务