您的位置:首页 > 其它

【validate-binary-search-tree】

2017-09-09 09:51 330 查看
Given a binary tree, determine if it is a valid binary search tree (BST).

Assume a BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node's key.
The right subtree of a node contains only nodes with keys greater than the node's key.
Both the left and right subtrees must also be binary search trees.

confused what"{1,#,2,3}"means? > read more
on how binary tree is serialized on OJ.

OJ's Binary Tree Serialization:

The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

Here's an example:
1
/ \
2   3
/
4
\
5

The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".

题意:判断一棵树是否是二叉搜索树;

思路:中序遍历看是否是有序的

class Solution
{
public:
bool isValidBST(TreeNode* root)
{
int pre = INT_MIN;
bool res = true;
inorder(pre, root, res);
return res;
}

void inorder(int& pre, TreeNode* root, bool &res)
{
if (root)
{
inorder(pre, root->left, res);

if (root->val<=pre)
{
res = false;
return;
}

pre = root->val;
inorder(pre, root->right, res);
}

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: