avatar
X*4
2
给一个string of nested ternary operations例如a?b?c:d:e,build a tree:root是
a,左子树是b?c:d对应的tree ,右子树是e。保证input都是valid的。
不太会写
avatar
T*u
3
南瓜的茎被白虫子吃空,整棵都死了。求助!
avatar
r*c
4
油价率先奔5了
avatar
p*g
5
avatar
T*e
6
sealy更好?
what's ur total

【在 T1 的大作中提到】
: 想换乘sealy不给换,惨了。
avatar
p*9
7
如果保证input都是valid的,用一个recursive应该很容易的。因为任何根节点一定从x
?开始。
avatar
i*s
9
这有啥新鲜的。
Il. wi . in 油价一直就不低。

【在 r*c 的大作中提到】
: 油价率先奔5了
avatar
M*A
10
晒黑~
avatar
h*x
11

不用换了。我买过sealy firm的,不怎么好。

【在 T1 的大作中提到】
: 想换乘sealy不给换,惨了。
avatar
X*4
12
有代码不

从x

【在 p**********9 的大作中提到】
: 如果保证input都是valid的,用一个recursive应该很容易的。因为任何根节点一定从x
: ?开始。

avatar
u*n
14
Why?

【在 i******s 的大作中提到】
: 这有啥新鲜的。
: Il. wi . in 油价一直就不低。

avatar
H*g
15
戴个礼帽,挎个盒子炮
avatar
a*1
16
serta那个原价贵哦。
大家是自己去拿还是让送呀?
avatar
c*w
17
第一个?前面的部分是root。
扫描过去找到对应第一个?的:,第一个?与这个:之间的substring是左子树,:的
右边的substring是右子树。
把左右子树对应的substring用recursion。
avatar
K*2
18
二战时皇军就有自行车,在山地和岛屿地区行动方便
avatar
r*r
19
ddo you have choice?

【在 a*****1 的大作中提到】
: serta那个原价贵哦。
: 大家是自己去拿还是让送呀?

avatar
c*w
20
好像有点问题
a?b:c?d:e
应该是a是跟,左子树是b,右子树是c?d:e吧?
avatar
l*y
21
是的,马来战役就有鬼子自行车奇袭战。此贴转老邱阅。

【在 K*****2 的大作中提到】
: 二战时皇军就有自行车,在山地和岛屿地区行动方便
avatar
r*r
22
I have called them.
It looks you can cancel it tomorrow, right?

【在 T1 的大作中提到】
: 想换乘sealy不给换,惨了。
avatar
c*w
23
我这个跟题目里的例子不一样。
我这个难道不是一个nested ternary?
还有更复杂的形式例如 a?b?c:d:e?f:g
avatar
m*d
24
自行车在山地不就是累赘么?

【在 l****y 的大作中提到】
: 是的,马来战役就有鬼子自行车奇袭战。此贴转老邱阅。
avatar
m*r
25
simon 最好

【在 T*********e 的大作中提到】
: sealy更好?
: what's ur total

avatar
a*n
26
右孩子也有孩子怎么办?
a?b?c:d:e?f:g
这样呢?
avatar
g*n
27
撒钉子

【在 K*****2 的大作中提到】
: 二战时皇军就有自行车,在山地和岛屿地区行动方便
avatar
b*o
28
还得付70的运费啊,可惜上周才买了烘干机送过来,,.....

【在 T1 的大作中提到】
: 想换乘sealy不给换,惨了。
avatar
p*2
29

明白了。

【在 c******w 的大作中提到】
: 我这个跟题目里的例子不一样。
: 我这个难道不是一个nested ternary?
: 还有更复杂的形式例如 a?b?c:d:e?f:g

avatar
S*e
30
zan
avatar
S*r
31
Simmons?

【在 m*r 的大作中提到】
: simon 最好
avatar
p*2
32

这个行吗?
Node dfs(String str, int s, int e){
int i = s;
while(ii++;
if(i==e){
return new Node(str.substring(s, e+1));
}
int j=i+1;
int count=0;
while(jif(str.charAt(j) == '?')
count++;
if(str.charAt(j) == ':')
count--;
j++;
}

Node node = new Node(str.substring(s, i));
node.left = dfs(str, i+1, j-1);
node.right= dfs(str, j+1, e);
return node;
}

【在 c******w 的大作中提到】
: 我这个跟题目里的例子不一样。
: 我这个难道不是一个nested ternary?
: 还有更复杂的形式例如 a?b?c:d:e?f:g

avatar
d*o
33


【在 p*********g 的大作中提到】

avatar
x*1
34
G的题目真是千奇百怪,我一个都不会做。
avatar
m*d
35
下山快?
古人云:
蛟龙出海虎下山
自行车作战最勇敢

【在 m**d 的大作中提到】
: 自行车在山地不就是累赘么?
avatar
y*u
36
kao, k哥对您来说小case了

【在 x*******1 的大作中提到】
: G的题目真是千奇百怪,我一个都不会做。
avatar
c*w
37
应该就是这样。其实就是括号match

【在 p*****2 的大作中提到】
:
: 这个行吗?
: Node dfs(String str, int s, int e){
: int i = s;
: while(i: i++;
: if(i==e){
: return new Node(str.substring(s, e+1));
: }
: int j=i+1;

avatar
p*2
38

多谢大牛。

【在 c******w 的大作中提到】
: 应该就是这样。其实就是括号match
avatar
p*2
39

大牛,我下个月去SF找你呀。

【在 y**********u 的大作中提到】
: kao, k哥对您来说小case了
avatar
y*u
40
我是菜鸟不是大牛。。。欢迎欢迎!

【在 p*****2 的大作中提到】
:
: 大牛,我下个月去SF找你呀。

avatar
x*1
41
准备归了。 跟fb,狗,netflix都永别了。

【在 y**********u 的大作中提到】
: kao, k哥对您来说小case了
avatar
c*w
42
您可别这么说。俺不敢当

【在 p*****2 的大作中提到】
:
: 大牛,我下个月去SF找你呀。

avatar
x*3
43
貌似没有必要这么复杂, 这个应该是O(n^2),下面是O(n)的。
简单起见,每个节点只有一个字符,str的话处理起来也很简单,直接读到:或?就
行了:
Node * dfs(char *& p)
{
if (!p || (!*p)|| *p == ':') return NULL;
Node * n = new Node(*p);
if (*(p+1) == '?')
{
p = p+2;
n->left = dfs(p);
++p;
}
if(*p++ == ':')
{
n->right = dfs(p);
}
return n;
}

【在 p*****2 的大作中提到】
:
: 大牛,我下个月去SF找你呀。

avatar
p*2
44

这个确实是可以优化。

【在 x*********3 的大作中提到】
: 貌似没有必要这么复杂, 这个应该是O(n^2),下面是O(n)的。
: 简单起见,每个节点只有一个字符,str的话处理起来也很简单,直接读到:或?就
: 行了:
: Node * dfs(char *& p)
: {
: if (!p || (!*p)|| *p == ':') return NULL;
: Node * n = new Node(*p);
: if (*(p+1) == '?')
: {
: p = p+2;

avatar
p*2
45

这个行吗?
int curr = 0;

Node dfs(String str){
if(curr >= str.length())
return null;

int i = curr;

while(ii++;

Node node = new Node(str.substring(curr, i));
curr = i+1;
if(inode.left = dfs(str);
node.right = dfs(str);
}
return node;
}

【在 x*********3 的大作中提到】
: 貌似没有必要这么复杂, 这个应该是O(n^2),下面是O(n)的。
: 简单起见,每个节点只有一个字符,str的话处理起来也很简单,直接读到:或?就
: 行了:
: Node * dfs(char *& p)
: {
: if (!p || (!*p)|| *p == ':') return NULL;
: Node * n = new Node(*p);
: if (*(p+1) == '?')
: {
: p = p+2;

avatar
x*3
46
好像有Bug :)

【在 p*****2 的大作中提到】
:
: 这个行吗?
: int curr = 0;
:
: Node dfs(String str){
: if(curr >= str.length())
: return null;
:
: int i = curr;
:

avatar
c*r
47
这个思路不错,我给转成了个c++代码如下。只是觉得你的code里面,最后一个if语句
,是否node->right = dfs(str);该移到if外,在一个else if 里面, 这个else if条件
是 else if (i我转的C++如下:
int curr = 0;
Node* tree_dfs(string str ) {
if(curr >= str.length())
return NULL;
int i = curr;
while(ii++;
Node* node = new Node(str.substr(curr, i-curr));
curr = i+1;
if(inode->left = tree_dfs(str);
}
else if (inode->right = tree_dfs(str);
}
return node;
}

【在 p*****2 的大作中提到】
:
: 这个行吗?
: int curr = 0;
:
: Node dfs(String str){
: if(curr >= str.length())
: return null;
:
: int i = curr;
:

avatar
p*2
48

bugfree好难。

【在 x*********3 的大作中提到】
: 好像有Bug :)
avatar
s*d
49
一个stack就可以了,碰到?就压栈,碰到:就弹俩出来,连着:后面的那个,算好结果再
压回去。最后栈里只有一个元素,就是结果。

【在 X*4 的大作中提到】
: 给一个string of nested ternary operations例如a?b?c:d:e,build a tree:root是
: a,左子树是b?c:d对应的tree ,右子树是e。保证input都是valid的。
: 不太会写

avatar
x*3
50
边界上还有问题,不过最大的问题是最后那个else if,肯定不能要else的。

【在 c***r 的大作中提到】
: 这个思路不错,我给转成了个c++代码如下。只是觉得你的code里面,最后一个if语句
: ,是否node->right = dfs(str);该移到if外,在一个else if 里面, 这个else if条件
: 是 else if (i: 我转的C++如下:
: int curr = 0;
: Node* tree_dfs(string str ) {
: if(curr >= str.length())
: return NULL;
: int i = curr;
: while(i
avatar
c*r
51
不明白,给指点下?

的。

【在 x*********3 的大作中提到】
: 边界上还有问题,不过最大的问题是最后那个else if,肯定不能要else的。
avatar
x*3
52
这种recursive用if else的话,左右子树就搞不到一个root上去
了,是吧。
avatar
X*4
53
给一个string of nested ternary operations例如a?b?c:d:e,build a tree:root是
a,左子树是b?c:d对应的tree ,右子树是e。保证input都是valid的。
不太会写
avatar
p*9
54
如果保证input都是valid的,用一个recursive应该很容易的。因为任何根节点一定从x
?开始。
avatar
X*4
55
有代码不

从x

【在 p**********9 的大作中提到】
: 如果保证input都是valid的,用一个recursive应该很容易的。因为任何根节点一定从x
: ?开始。

avatar
c*w
56
第一个?前面的部分是root。
扫描过去找到对应第一个?的:,第一个?与这个:之间的substring是左子树,:的
右边的substring是右子树。
把左右子树对应的substring用recursion。
avatar
c*w
57
好像有点问题
a?b:c?d:e
应该是a是跟,左子树是b,右子树是c?d:e吧?

【在 p*****2 的大作中提到】
:
: bugfree好难。

avatar
c*w
58
我这个跟题目里的例子不一样。
我这个难道不是一个nested ternary?
还有更复杂的形式例如 a?b?c:d:e?f:g

【在 p*****2 的大作中提到】
:
: bugfree好难。

avatar
a*n
59
右孩子也有孩子怎么办?
a?b?c:d:e?f:g
这样呢?

【在 p*****2 的大作中提到】
:
: bugfree好难。

avatar
p*2
60

明白了。

【在 c******w 的大作中提到】
: 我这个跟题目里的例子不一样。
: 我这个难道不是一个nested ternary?
: 还有更复杂的形式例如 a?b?c:d:e?f:g

avatar
p*2
61

这个行吗?
Node dfs(String str, int s, int e){
int i = s;
while(ii++;
if(i==e){
return new Node(str.substring(s, e+1));
}
int j=i+1;
int count=0;
while(jif(str.charAt(j) == '?')
count++;
if(str.charAt(j) == ':')
count--;
j++;
}

Node node = new Node(str.substring(s, i));
node.left = dfs(str, i+1, j-1);
node.right= dfs(str, j+1, e);
return node;
}

【在 c******w 的大作中提到】
: 我这个跟题目里的例子不一样。
: 我这个难道不是一个nested ternary?
: 还有更复杂的形式例如 a?b?c:d:e?f:g

avatar
x*1
62
G的题目真是千奇百怪,我一个都不会做。
avatar
y*u
63
kao, k哥对您来说小case了

【在 x*******1 的大作中提到】
: G的题目真是千奇百怪,我一个都不会做。
avatar
c*w
64
应该就是这样。其实就是括号match

【在 p*****2 的大作中提到】
:
: 这个行吗?
: Node dfs(String str, int s, int e){
: int i = s;
: while(i: i++;
: if(i==e){
: return new Node(str.substring(s, e+1));
: }
: int j=i+1;

avatar
p*2
65

多谢大牛。

【在 c******w 的大作中提到】
: 应该就是这样。其实就是括号match
avatar
p*2
66

大牛,我下个月去SF找你呀。

【在 y**********u 的大作中提到】
: kao, k哥对您来说小case了
avatar
y*u
67
我是菜鸟不是大牛。。。欢迎欢迎!

【在 p*****2 的大作中提到】
:
: 大牛,我下个月去SF找你呀。

avatar
x*1
68
准备归了。 跟fb,狗,netflix都永别了。

【在 y**********u 的大作中提到】
: kao, k哥对您来说小case了
avatar
c*w
69
您可别这么说。俺不敢当

【在 p*****2 的大作中提到】
:
: 大牛,我下个月去SF找你呀。

avatar
x*3
70
貌似没有必要这么复杂, 这个应该是O(n^2),下面是O(n)的。
简单起见,每个节点只有一个字符,str的话处理起来也很简单,直接读到:或?就
行了:
Node * dfs(char *& p)
{
if (!p || (!*p)|| *p == ':') return NULL;
Node * n = new Node(*p);
if (*(p+1) == '?')
{
p = p+2;
n->left = dfs(p);
++p;
}
if(*p++ == ':')
{
n->right = dfs(p);
}
return n;
}

【在 p*****2 的大作中提到】
:
: 大牛,我下个月去SF找你呀。

avatar
p*2
71

这个确实是可以优化。

【在 x*********3 的大作中提到】
: 貌似没有必要这么复杂, 这个应该是O(n^2),下面是O(n)的。
: 简单起见,每个节点只有一个字符,str的话处理起来也很简单,直接读到:或?就
: 行了:
: Node * dfs(char *& p)
: {
: if (!p || (!*p)|| *p == ':') return NULL;
: Node * n = new Node(*p);
: if (*(p+1) == '?')
: {
: p = p+2;

avatar
p*2
72

这个行吗?
int curr = 0;

Node dfs(String str){
if(curr >= str.length())
return null;

int i = curr;

while(ii++;

Node node = new Node(str.substring(curr, i));
curr = i+1;
if(inode.left = dfs(str);
node.right = dfs(str);
}
return node;
}

【在 x*********3 的大作中提到】
: 貌似没有必要这么复杂, 这个应该是O(n^2),下面是O(n)的。
: 简单起见,每个节点只有一个字符,str的话处理起来也很简单,直接读到:或?就
: 行了:
: Node * dfs(char *& p)
: {
: if (!p || (!*p)|| *p == ':') return NULL;
: Node * n = new Node(*p);
: if (*(p+1) == '?')
: {
: p = p+2;

avatar
x*3
73
好像有Bug :)

【在 p*****2 的大作中提到】
:
: 这个行吗?
: int curr = 0;
:
: Node dfs(String str){
: if(curr >= str.length())
: return null;
:
: int i = curr;
:

avatar
c*r
74
这个思路不错,我给转成了个c++代码如下。只是觉得你的code里面,最后一个if语句
,是否node->right = dfs(str);该移到if外,在一个else if 里面, 这个else if条件
是 else if (i我转的C++如下:
int curr = 0;
Node* tree_dfs(string str ) {
if(curr >= str.length())
return NULL;
int i = curr;
while(ii++;
Node* node = new Node(str.substr(curr, i-curr));
curr = i+1;
if(inode->left = tree_dfs(str);
}
else if (inode->right = tree_dfs(str);
}
return node;
}

【在 p*****2 的大作中提到】
:
: 这个行吗?
: int curr = 0;
:
: Node dfs(String str){
: if(curr >= str.length())
: return null;
:
: int i = curr;
:

avatar
p*2
75

bugfree好难。

【在 x*********3 的大作中提到】
: 好像有Bug :)
avatar
s*d
76
一个stack就可以了,碰到?就压栈,碰到:就弹俩出来,连着:后面的那个,算好结果再
压回去。最后栈里只有一个元素,就是结果。

【在 X*4 的大作中提到】
: 给一个string of nested ternary operations例如a?b?c:d:e,build a tree:root是
: a,左子树是b?c:d对应的tree ,右子树是e。保证input都是valid的。
: 不太会写

avatar
x*3
77
边界上还有问题,不过最大的问题是最后那个else if,肯定不能要else的。

【在 c***r 的大作中提到】
: 这个思路不错,我给转成了个c++代码如下。只是觉得你的code里面,最后一个if语句
: ,是否node->right = dfs(str);该移到if外,在一个else if 里面, 这个else if条件
: 是 else if (i: 我转的C++如下:
: int curr = 0;
: Node* tree_dfs(string str ) {
: if(curr >= str.length())
: return NULL;
: int i = curr;
: while(i
avatar
c*r
78
不明白,给指点下?

的。

【在 x*********3 的大作中提到】
: 边界上还有问题,不过最大的问题是最后那个else if,肯定不能要else的。
avatar
x*3
79
这种recursive用if else的话,左右子树就搞不到一个root上去
了,是吧。
avatar
k*L
80
Let me try:
Node *ternary(string &s) {
if (s.size() == 0) return NULL;
stack st;
bool isLeft = true;
int prev = 0;
for (int i = 0; i < s.size(); ++i) {
if (s.at(i) == ‘?’ || s.at(i) == ‘:’) {
Node *newNode = new Node(s.substr(pref, i - pref));
if (!st.empty()) {
Node *n;
if (isLeft) {
n = st.top();
n->left = newNode;
} else {
n = st.pop();
n->right = newNode;
}
}
if (s.at(i) == ‘?’)
st.push(newNode);
isLeft = true;
pev = i + 1;
} else if (s.at(i) == ‘:’) {
isLeft = false;
prev = i + 1;
}
} else {
continue;
}
}
Node *root = NULL;
while (!st.empty())
root = st.pop();
return root;
}

【在 X*4 的大作中提到】
: 给一个string of nested ternary operations例如a?b?c:d:e,build a tree:root是
: a,左子树是b?c:d对应的tree ,右子树是e。保证input都是valid的。
: 不太会写

avatar
c*n
81
这个就 recursive parse 最简单, 因为操作符左结合的, 反过来不行

【在 X*4 的大作中提到】
: 给一个string of nested ternary operations例如a?b?c:d:e,build a tree:root是
: a,左子树是b?c:d对应的tree ,右子树是e。保证input都是valid的。
: 不太会写

avatar
l*s
82
//Recursive
public static TreeNode buildTree(string express)
{
int i = 0;
while (i < express.Length && express[i] != '?') i++;
TreeNode root = new TreeNode(express.Substring(0, i).Trim());
int index = i, count = 0;
while (index < express.Length && !(count == 0 && express[index] == ':'))
{
if (express[index] == '?') count++;
else if (express[index] == ':') count--;
if(count != 0) index++;
}
if (index >= express.Length) return root;
root.Left = buildTree(express.Substring(i + 1, index - i - 1).Trim());
root.Right = buildTree(express.Substring(index + 1).Trim());
return root;
}
//Iterative
public static TreeNode buildTree_Iterative(string express)
{
Stack stack = new Stack();
StringBuilder subExpress = new StringBuilder();
char lastOp = '\0';
for(int i = 0; i <= express.Length; i++)
if (i == express.Length || express[i] == '?' || express[i] == ':')
{
TreeNode newNode = new TreeNode(subExpress.ToString().Trim());
if(lastOp == '?') stack.Peek().Left = newNode;
else if (lastOp == ':')
{
stack.Pop();
stack.Peek().Right = newNode;
if(stack.Count > 1) stack.Pop();
}
stack.Push(newNode);
if(i < express.Length) lastOp = express[i];
subExpress.Clear();
}
else subExpress.Append(express[i]);
while (stack.Count > 1) stack.Pop();
return stack.Pop();
}
avatar
s*x
83

嗯,root 除了左右子树外,还应该有第三棵子树做为?之前的值,这个原题没讲清楚。

【在 a******n 的大作中提到】
: 右孩子也有孩子怎么办?
: a?b?c:d:e?f:g
: 这样呢?

avatar
s*x
84

很不错,感觉要处理?前的值也可以子树就対了。

【在 x*********3 的大作中提到】
: 貌似没有必要这么复杂, 这个应该是O(n^2),下面是O(n)的。
: 简单起见,每个节点只有一个字符,str的话处理起来也很简单,直接读到:或?就
: 行了:
: Node * dfs(char *& p)
: {
: if (!p || (!*p)|| *p == ':') return NULL;
: Node * n = new Node(*p);
: if (*(p+1) == '?')
: {
: p = p+2;

avatar
r*n
85
case class TreeNode(value: Char, var left: Option[TreeNode] = None, var
right: Option[TreeNode] = None)
object TreeBuilder {
//recursive version
def recursive(input: String, start: Int): (Int, Option[TreeNode]) ={
if (start >= input.length) {
(start, None)
} else {
val cur = Some(TreeNode(input(start)))
if (start == input.length - 1) {
(start + 1, cur)
} else {
input(start + 1) match {
case '?' =>
val (loffset, l) = recursive(input, start + 2)
val (roffset, r) = recursive(input, loffset)
cur.get.left = l
cur.get.right = r
(roffset, cur)
case ':' =>
(start + 2, cur)
}
}
}
}
// iterative version
def buildTree(input:String): Option[TreeNode] = {
if (input.length == 0) {
return None
}
val stack = new mutable.Stack[TreeNode]()
val root = Some(TreeNode(input(0)))
var cur: TreeNode = root.get
var left = false
(1 until input.length).foreach { x=>
input(x) match {
case '?' =>
left = true
stack.push(cur)
case ':' =>
case _ =>
if (left) {
cur.left = Some(TreeNode(input(x)))
left = false
cur = cur.left.get
} else {
cur = stack.pop()
cur.right = Some(TreeNode(input(x)))
cur = cur.right.get
}
}
}
root
}
}
avatar
m*t
86
seems recursive is the easiest. I am still trying to figure out a stack-
based approach:-)
class TreeNode{
public:
string str;
TreeNode* left;
TreeNode* right;
TreeNode(string s) {
str = s;
left = NULL;
right = NULL;
}
};
class Solution {
public:
TreeNode* buildTree(string &A, int& index) {
int index_next = A.find_first_of("?:",index);
if (index_next==string::npos) {
TreeNode* root = new TreeNode(A.substr(index));
index = A.size();
return root;
}
TreeNode* root = new TreeNode(A.substr(index, index_next-index));
if (A[index_next]=='?') {
index = index_next+1;
root->left = buildTree(A, index);
root->right = buildTree(A, index);
} else {
index = index_next+1;
}
return root;
}
TreeNode* buildTree(string &A) {
int index = 0;
return buildTree(A, index);
}
};

【在 X*4 的大作中提到】
: 给一个string of nested ternary operations例如a?b?c:d:e,build a tree:root是
: a,左子树是b?c:d对应的tree ,右子树是e。保证input都是valid的。
: 不太会写

avatar
m*t
87
stack based approach
TreeNode* buildTreeStack(string &A) {
stack s_nodes;
stack s_operators;
int index = 0;
while (indexif (A[index]=='?') {
s_operators.push(A[index]);
index++;
} else if (A[index]==':') {
if (s_operators.top()=='?') {
s_operators.push(A[index]);
} else {
// pop three things from the s_nodes, and form the
subtree
TreeNode* new_right = s_nodes.top(); s_nodes.pop();
TreeNode* new_left = s_nodes.top(); s_nodes.pop();
TreeNode* new_root = s_nodes.top(); s_nodes.pop();
s_operators.pop(); s_operators.pop();
new_root->left = new_left;
new_root->right = new_right;
s_nodes.push(new_root);
s_operators.push(A[index]);
}
index++;
} else { // regular node
int index_next = A.find_first_of("?:", index);
if (index_next==string::npos) {
TreeNode* new_node = new TreeNode(A.substr(index));
index = A.size();
s_nodes.push(new_node);
} else {
TreeNode* new_node = new TreeNode(A.substr(index, index_
next-index));
index = index_next;
s_nodes.push(new_node);
}
}
}
while (!s_operators.empty()) {
TreeNode* new_right = s_nodes.top(); s_nodes.pop();
TreeNode* new_left = s_nodes.top(); s_nodes.pop();
TreeNode* new_root = s_nodes.top(); s_nodes.pop();
s_operators.pop(); s_operators.pop();
new_root->left = new_left;
new_root->right = new_right;
s_nodes.push(new_root);
}
return s_nodes.top();
}

【在 m****t 的大作中提到】
: seems recursive is the easiest. I am still trying to figure out a stack-
: based approach:-)
: class TreeNode{
: public:
: string str;
: TreeNode* left;
: TreeNode* right;
: TreeNode(string s) {
: str = s;
: left = NULL;

avatar
b*e
88
你这个题是有歧义的:
a?b:c?d:e
这个string的解释取决于那个符号的优先级高。

【在 X*4 的大作中提到】
: 给一个string of nested ternary operations例如a?b?c:d:e,build a tree:root是
: a,左子树是b?c:d对应的tree ,右子树是e。保证input都是valid的。
: 不太会写

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。