LintCode 3687 · Check If an Array Is a Valid Sequence (二叉树遍历和分治好题)

3687 · Check If an Array Is a Valid Sequence
Algorithms
Medium
Description
Given a binary tree with a root node root, we call the sequence of node values in any path from the root node to any leaf node is a “valid sequence” of that binary tree.

Now you are given an array of integers arr as a sequence, and you need to check whether it is a “valid sequence” of the given binary tree.

A valid sequence must be from the root node to the leaf nodes

Example
Example 1

Input

root = [0,1,0,0,1,0,#,#,1,0,0]
arr = [0,1,0,1]
Output

true
Explanation

The path 0 -> 1 -> 0 -> 1 is a valid sequence.
The given binary tree is:
0
/
1 0
/ \ /
0 1 0
\ /
1 0 0
Other valid sequences are:
0 -> 1 -> 1 -> 0
0 -> 0 -> 0
Example 2

Input

root = [0,1,0,0,1,0,#,#,1,0,0]
arr = [0,0,1]
Output

false
Explanation

The path 0 -> 0 -> 1 does not exist, therefore it is not even a sequence.
Example 3

Input

root = [0,1,0,0,1,0,#,#,1,0,0]
arr = [0,1,1]
Output

false
Explanation

The path 0 -> 1 -> 1 is a sequence, but it is not a valid sequence. Because the end of the sequence is not a leaf node.

解法1: 遍历

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */

class Solution {
   
   
public:
    /**
     * @param root: Root node of a binary tree.
     * @param arr: An array of integers.
     * @return: If the array is a valid sequence.
     */
    bool isValidSequence(TreeNode *root, vector
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值