三、二叉樹中的列表(Weekly Contest 178)

題目描述:
給你一棵以 root 爲根的二叉樹和一個 head 爲第一個節點的鏈表。

如果在二叉樹中,存在一條一直向下的路徑,且每個點的數值恰好一一對應以 head 爲首的鏈表中每個節點的值,那麼請你返回 True ,否則返回 False 。

一直向下的路徑的意思是:從樹中某個節點開始,一直連續向下的路徑。

示例 1:

輸入:head = [4,2,8], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
輸出:true
解釋:樹中藍色的節點構成了與鏈表對應的子路徑。
示例 2:

輸入:head = [1,4,2,6], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
輸出:true
示例 3:

輸入:head = [1,4,2,6,8], root = [1,4,4,null,2,2,null,1,null,6,8,null,null,null,null,1,3]
輸出:false
解釋:二叉樹中不存在一一對應鏈表的路徑。

提示:

二叉樹和鏈表中的每個節點的值都滿足 1 <= node.val <= 100 。
鏈表包含的節點數目在 1 到 100 之間。
二叉樹包含的節點數目在 1 到 2500 之間。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/linked-list-in-binary-tree
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
在這裏插入圖片描述

emm比較簡單
使用遞歸即可

class Solution {
   public boolean isSubPath(ListNode head, TreeNode root) {
          if (head == null) {
            return true;
        }
        if (root == null) {
            return false;
        }
        return isend(head, root) || isSubPath(head,root.left) || isSubPath(head,root.right);
         }
    public boolean isend(ListNode head, TreeNode root) {
        if (head == null) {
            return true;
        }
        if (root == null) {
            return false;
        }
        if (root.val == head.val) {
            return isend(head.next, root.left) || isend(head.next, root.right);
        }
        return false;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章