题目描述:/
从最后的节点往上记录每个节点的递增和递减序列。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/struct Node {unsigned int inc;unsigned int dec;
};int max_length;struct Node dfs(struct TreeNode *cur_node)
{struct Node node;struct Node left_node;struct Node right_node;node.inc = 0;node.dec = 0;if (cur_node->left != NULL) {left_node = dfs(cur_node->left);if (cur_node->val - cur_node->left->val == 1) {node.dec = left_node.dec + 1; } else if (cur_node->left->val - cur_node->val == 1) {node.inc = left_node.inc + 1;}}if (cur_node->right != NULL) {right_node = dfs(cur_node->right);if (cur_node->val - cur_node->right->val == 1) {node.dec = fmax(right_node.dec + 1, node.dec); } else if (cur_node->right->val - cur_node->val == 1) {node.inc = fmax(right_node.inc + 1, node.inc);}}max_length = (max_length > (node.dec + node.inc + 1) ? max_length : (node.dec + node.inc + 1));return node;
}int longestConsecutive(struct TreeNode* root){struct Node node;max_length = 0;dfs(root);return max_length;
}
本文发布于:2024-01-29 15:03:26,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170651181016118.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |