func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 5;   int n, root;   vector<int> adj[N];   bool ok;   int dfs(int v, int p = -1) {     int ret = 0;     int cnt = 2;     if (v == root) cnt++;     for (int u : adj[v]) {       if (u == p) continue;       int res = dfs(u, v);       if (res) ret = 2;       if (res == 2) cnt--;     }     if (cnt <= 0) {       ok = false;     }     if (adj[v].size() == 3) ret = max(1, ret);     if (adj[v].size() > 3) ret = 2;     return ret;   }   int main() {     scanf( %d , &n);     for (int i = 1; i < n; i++) {       int a, b;       scanf( %d%d , &a, &b);       a--;       b--;       adj[a].push_back(b);       adj[b].push_back(a);     }     ok = true;     root = 0;     for (int i = 0; i < n; i++)       if (adj[root].size() < adj[i].size()) root = i;     dfs(root);     if (!ok && adj[root].size() == 3) {       ok = true;       for (int u : adj[root]) {         if (adj[u].size() == 3) {           root = u;           break;         }       }       dfs(root);     }     if (ok)       puts( Yes );     else       puts( No );     return 0;   }   