A1130 中綴表示式 查詢根節點

2022-05-02 05:09:06 字數 1677 閱讀 3129

**:

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#define i scanf

#define ol puts

#define o printf

#define f(a,b,c) for(a=b;a#define ff(a,b) for(a=0;a#define fg(a,b) for(a=b-1;a>=0;a--)

#define len 10000

#define max 0x06ffffff

#define v vectorusing

namespace

std;

typedef

struct

inputinfoinputinfo;

typedef

struct

node

node(

string d)

}node;

inputinfo infoarr[

60];

node *nodes[60

];int used[60

];node * insert_node(int

index);

void inorder(node*node);

node *root;

int cnt=0

;int

main()

f(i,

1,n+1)//

printf("%d %d\n",cnt,i);

root=nodes[i];

inorder(root->l);

printf("%s

",root->d.c_str());

inorder(root->r);

return0;

}node * insert_node(int

index)

else

if(r>0

)

if(used[r])

else

nodes[index]=node;

return

node;

}void inorder(node*node)

}

view code

主要的點有兩個。首先是中綴表示式:

void inorder(node*node)

}

inorder(root->l);

printf("%s

",root->d.c_str());

inorder(root->r);

對中序遍歷稍加修改,就可以得到像這樣的中綴表示式:(a+b)*(c*(-d))

其次是錄入輸入資訊後怎樣不浪費時間,巧妙的找到根節點是哪一行記錄。這裡我們用nodes陣列記錄樹形結點,用used陣列記錄是否訪問過,用cnt記錄形成結點的個數,然後遞迴呼叫insert_node,就可以及時找到根節點的記錄。

需要進步的點:做題速度太慢。

1003 中綴表示式轉字尾表示式

1003.中綴表示式轉字尾表示式 total 466accepted 89 time limit 1sec memory limit 256mb description 將中綴表示式 infix expression 轉換為字尾表示式 postfix expression 假設中綴表示式中的運算元均...

9 中綴表示式轉成字尾表示式

private static int add 1 private static int sub 1 private static int mul 2 private static int div 2 寫乙個方法,返回對應的優先順序數字 public static int getvalue strin...

4 中綴表示式的值

總時間限制 200ms 記憶體限制 1024kb 描述 人們熟悉的四則運算表示式稱為中綴表示式,例如 23 34 45 5 6 7 在程式語言中,可以利用堆疊的方法把中綴表示式轉換成保值的字尾表示式 又稱逆波蘭表示法 並最終變為計算機可以直接執行的指令,得到表示式的值。給定乙個中綴表示式,編寫程式,...