【数据结构】二叉树中的列表 Linked List in Binary Tree
时间:2021-09-08
本文章向大家介绍【数据结构】二叉树中的列表 Linked List in Binary Tree,主要包括【数据结构】二叉树中的列表 Linked List in Binary Tree使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
二叉树中的列表 Linked List in Binary Tree7
一颗以root
为根的二叉树,和一个head
为首节点的链表。如果在二叉树中存在一个一直向下的路径,并且每一个节点的值都对应head
为首节点的链表的值,那么就返回true
,否则返回 false
head = [4,2,8]
root =[1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
true
思路
首先思考的是通过递归来解决,设计一个递归方法来处理。
方法主要用来判断树的节点tnode
和链表的节点lnode
向下寻找是否存在一条path
可以与lnode
节点开始的链表匹配。如果匹配就返回true,否则false。
接着就是递归的结束条件:
1 如果list已经匹配完了,那么就是存在的,true
2 如果tree都访问到null空节点,那么就不存在,false
3 如果节点对应的值不相等,false
4 如果不是上面的3种情况,说明目前来说匹配成功,那就继续递归。从tnode的左右子树,开始与lnode.next来匹配。
public boolean isSubPath(ListNode head, TreeNode root) {
if (head==null){
return true;
}
if (root == null){
return false;
}
if (head.val==root.val&&judge(root,head)){
return true;
}
return isSubPath(head,root.left)||isSubPath(head,root.right);
}
public boolean judge(TreeNode root,ListNode head){
if (head == null){
return true;
}
if (root == null){
return false;
}
if (head.val!=root.val){
return false;
}
return judge(root.left,head.next)||judge(root.right,head.next);
}
Tag
binary search
原文地址:https://www.cnblogs.com/dreamtaker/p/15244495.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++ share_prt 简单设计和实现
- 使用函数对象与使用函数的比较
- C++ 函数指针的定义方法及使用
- C++ 线程池的简易实现
- Flutter基础widgets教程-DataTable篇
- 2015-C++研发附加题第一题
- win7 64位 下,进程可申请的堆空间
- 生成N位格雷码
- sort 升序还是降序?priority_queue 大根堆还是小根堆?
- 将2N个整数分成两组,每组有N个数,并且满足,这两组的差的绝对值最小。
- C++11正则表达式 ECMAScript文法
- Flutter基础widgets教程-Divider篇
- std::vector扩容机制,.按1.5倍取整扩容,如下。
- 求一个数的临近的较大的2的整数次幂
- 在文件IO操作中,合理使用缓存。