题目大意是,找到最临近给定节点的叶节点,例如

             1/ \2   3/4/5/6

给定2的话,最近的是3,给定4的话,最近的是6。

思路:题目中,树的结构并不利于寻找答案,需要把树的结构转换成图,然后通过广度优先搜索,可以轻易的获取最近的叶节点。

代码:

class Solution {public:int findClosestLeaf(TreeNode* root, int k) {kv=k;for(int i=0;i<1010;i++){f[i]=false;v[i]=false;}helper(root);queue<int> q;q.push(k);int res=0;while(q.size()>0){int tk=q.front();if(f[tk] == true)return tk;q.pop();if( v[tk] == false){v[tk]=true;res++;int ns=n[tk].size();for(int i=0;i<ns;i++){int tki=n[tk][i];if(f[tki] == true)return tki;if(v[tki] == false){q.push(tki);}}}}return -1;}void helper(TreeNode* t){if(t == NULL)return;if(t->left == NULL && t->right == NULL){f[t->val]=true;return;}if(t->left !=NULL){n[t->left->val].push_back(t->val);n[t->val].push_back(t->left->val);helper(t->left);}if(t->right !=NULL){n[t->right->val].push_back(t->val);n[t->val].push_back(t->right->val);helper(t->right);}}private:vector<int> n[1010];bool f[1010];bool v[1010];int kv;
};

代码结构,是分两步,第一步通过helper函数,将树转化成无权邻域矩阵,第二步,在主函数里通过广度优先搜索,寻找最短路径。

742. Closest Leaf in a Binary Tree的思路相关推荐

  1. Leetcode 742. Closest Leaf in a Binary Tree

    Leetcode 742. Closest Leaf in a Binary Tree Approach #1: Convert to Graph 把树转换为以k节点为中心的图,从k节点开始层序遍历, ...

  2. PAT甲级-二叉树的遍历-1102 Invert a Binary Tree解题思路

    1102 Invert a Binary Tree (25 分) 思路 翻转二叉树 后序遍历翻转即可,由于给出每个结点的左右儿子,所以这里用到二叉树的静态写法更加方便 这里有个坑,bool数组初始化为 ...

  3. ZOJ 3965 Binary Tree Restoring

    Binary Tree Restoring 思路: 递归 比较a序列和b序列中表示同一个子树的一段区间,不断递归 代码: #include<bits/stdc++.h> using nam ...

  4. 【Construct Binary Tree from Inorder and Postorder Traversal】cpp

    题目: Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume ...

  5. LeetCode 272 Closest Binary Tree Traversal II 解题思路

    原题网址:https://leetcode.com/problems... Given a non-empty binary search tree and a target value, find  ...

  6. 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  7. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  8. LeetCode: 111. Minimum Depth of Binary Tree

    题目 Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bina ...

  9. LeetCode: 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  10. LeetCode: 104. Maximum Depth of Binary Tree

    题目 Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the l ...

最新文章

  1. ORA-12514 监听程序当前无法识别连接描述符中的服务
  2. 鸟哥的Linux私房菜(基础篇)-第三章、主机规划与磁盘分区(三.1. Linux与硬件的搭配)
  3. QString与LPCWSTR互转
  4. python求和函数1到100_Python定义函数实现累计求和操作
  5. Linux 本地密码正确无法登录,记一次无法正常本地登陆Linux服务器(确定密码正确)...
  6. 开源软件通识基础:第二周课程回顾与总结
  7. 捕获异常VS抛出异常
  8. C语言结构体使用与指针的理解
  9. bootstrap 悬浮固定_CST Tech Tips - 流式细胞术中如何固定和通透细胞?
  10. 百度大脑公开课!快速定制高精度计算机视觉模型
  11. 创建完maven工程之后,提示[FATAL_ERROR] Cannot start Maven: Project JDK is not specified. a href=''Configure...
  12. [Ext JS]5.8 Group Grid-分组网格
  13. Android 四种启动模式
  14. android图片选择器实现说明
  15. NullableTypes for .NET
  16. 评选最佳文本编辑器-UltraEdit From善用佳软
  17. python变量名包括_python中变量的命名以及使用
  18. Java JUI打字小游戏项目
  19. 如何编写ddos防御脚本
  20. Mac 调节鼠标移速

热门文章

  1. 漫谈 | 据说搞区块链的人都觉得自己是“上帝
  2. Flappy bird制作过程
  3. 利用INFOPATH2007VS2005开发MOSS工作流详解 --收藏
  4. Pytorch——momentum动量
  5. 2.1.1队列——雏形(初始版本)
  6. 用Scrapy框架爬取校花网所有校花图片
  7. CSS:纯CSS3全屏背景图片幻灯片轮播
  8. 微信开发工具更新后,跳转页面报错
  9. DaDa英语怎么样,给孩子报名哒哒英语上课好不好?
  10. 统计字符串中字符ch出现的次数c语言,C语言与汇编的嵌入式编程:统计字符串中各字符出现的次数...