#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S chmax( S & a, T b) {
if ( a< b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
#define TreeNode dummy_TreeNode
struct TreeNode{
int val;
TreeNode * left;
TreeNode * right;
TreeNode( int x) : val( x) , left( NULL ) , right( NULL ) {
}
}
;
#undef TreeNode
int res;
void solve( TreeNode * n, int now, int dir) {
if ( n == NULL ) {
return ;
}
chmax( res, now) ;
if ( dir== 1 ) {
solve( n- > left,now+ 1 , 0 ) ;
}
else {
solve( n- > left,1 , 0 ) ;
}
if ( dir== 0 ) {
solve( n- > right,now+ 1 , 1 ) ;
}
else {
solve( n- > right,1 , 1 ) ;
}
}
class Solution{
public :
int longestZigZag( TreeNode* root) {
res = 0 ;
solve( root, 0 , - 1 ) ;
return res;
}
}
;
// cLay varsion 20200308-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// #define TreeNode dummy_TreeNode
// struct TreeNode {
// int val;
// TreeNode *left;
// TreeNode *right;
// TreeNode(int x) : val(x), left(NULL), right(NULL) {}
// };
// #undef TreeNode
//
// int res;
//
// void solve(TreeNode *n, int now, int dir){
// if(n == NULL) return;
// res >?= now;
// solve(n->left, if[dir==1, now+1, 1], 0);
// solve(n->right, if[dir==0, now+1, 1], 1);
// }
//
// class Solution {
// public:
// int longestZigZag(TreeNode* root) {
// res = 0;
// solve(root, 0, -1);
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGNobWF4KFMgJmEsIFQgYil7CiAgaWYoYTxiKXsKICAgIGE9YjsKICB9CiAgcmV0dXJuIGE7Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgojZGVmaW5lIFRyZWVOb2RlIGR1bW15X1RyZWVOb2RlCnN0cnVjdCBUcmVlTm9kZXsKICBpbnQgdmFsOwogIFRyZWVOb2RlICpsZWZ0OwogIFRyZWVOb2RlICpyaWdodDsKICBUcmVlTm9kZShpbnQgeCkgOiB2YWwoeCksIGxlZnQoTlVMTCksIHJpZ2h0KE5VTEwpewogIH0KfQo7CiN1bmRlZiBUcmVlTm9kZQppbnQgcmVzOwp2b2lkIHNvbHZlKFRyZWVOb2RlICpuLCBpbnQgbm93LCBpbnQgZGlyKXsKICBpZihuID09IE5VTEwpewogICAgcmV0dXJuOwogIH0KICBjaG1heChyZXMsIG5vdyk7CiAgaWYoZGlyPT0xKXsKICAgIHNvbHZlKG4tPmxlZnQsbm93KzEsIDApOwogIH0KICBlbHNlewogICAgc29sdmUobi0+bGVmdCwxLCAwKTsKICB9CiAgaWYoZGlyPT0wKXsKICAgIHNvbHZlKG4tPnJpZ2h0LG5vdysxLCAxKTsKICB9CiAgZWxzZXsKICAgIHNvbHZlKG4tPnJpZ2h0LDEsIDEpOwogIH0KfQpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IGxvbmdlc3RaaWdaYWcoVHJlZU5vZGUqIHJvb3QpewogICAgcmVzID0gMDsKICAgIHNvbHZlKHJvb3QsIDAsIC0xKTsKICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMjAwMzA4LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gI2RlZmluZSBUcmVlTm9kZSBkdW1teV9UcmVlTm9kZQovLyBzdHJ1Y3QgVHJlZU5vZGUgewovLyAgIGludCB2YWw7Ci8vICAgVHJlZU5vZGUgKmxlZnQ7Ci8vICAgVHJlZU5vZGUgKnJpZ2h0OwovLyAgIFRyZWVOb2RlKGludCB4KSA6IHZhbCh4KSwgbGVmdChOVUxMKSwgcmlnaHQoTlVMTCkge30KLy8gfTsKLy8gI3VuZGVmIFRyZWVOb2RlCi8vIAovLyBpbnQgcmVzOwovLyAKLy8gdm9pZCBzb2x2ZShUcmVlTm9kZSAqbiwgaW50IG5vdywgaW50IGRpcil7Ci8vICAgaWYobiA9PSBOVUxMKSByZXR1cm47Ci8vICAgcmVzID4/PSBub3c7Ci8vICAgc29sdmUobi0+bGVmdCwgaWZbZGlyPT0xLCBub3crMSwgMV0sIDApOwovLyAgIHNvbHZlKG4tPnJpZ2h0LCBpZltkaXI9PTAsIG5vdysxLCAxXSwgMSk7Ci8vIH0KLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIGludCBsb25nZXN0WmlnWmFnKFRyZWVOb2RlKiByb290KSB7Ci8vICAgICByZXMgPSAwOwovLyAgICAgc29sdmUocm9vdCwgMCwgLTEpOwovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==
compilation info
prog.cpp:26:12: error: variable or field ‘solve’ declared void
void solve(TreeNode *n, int now, int dir){
^~~~~~~~
prog.cpp:26:12: error: ‘TreeNode’ was not declared in this scope
prog.cpp:26:12: note: suggested alternative: ‘remove’
void solve(TreeNode *n, int now, int dir){
^~~~~~~~
remove
prog.cpp:26:22: error: ‘n’ was not declared in this scope
void solve(TreeNode *n, int now, int dir){
^
prog.cpp:26:22: note: suggested alternative: ‘yn’
void solve(TreeNode *n, int now, int dir){
^
yn
prog.cpp:26:25: error: expected primary-expression before ‘int’
void solve(TreeNode *n, int now, int dir){
^~~
prog.cpp:26:34: error: expected primary-expression before ‘int’
void solve(TreeNode *n, int now, int dir){
^~~
prog.cpp:46:21: error: ‘TreeNode’ has not been declared
int longestZigZag(TreeNode* root){
^~~~~~~~
prog.cpp: In member function ‘int Solution::longestZigZag(int*)’:
prog.cpp:48:5: error: ‘solve’ was not declared in this scope
solve(root, 0, -1);
^~~~~
stdout