1 条题解

  • 19
    @ 2024-3-24 12:24:11

    【挑战题】二叉树的三种遍历 P1250

    这道题这么简单,居然没有人发题解,大家要对我叫爸爸才怪谢谢我

    思路

    1.准备

    跳过

    2.输入 用vector

    代码

    跳过

    3.函数定义

    ①先序遍历

    void dfs1(int u){
        cout<<u<<" ";
        if (e[u][0]){
            dfs1(e[u][0]);
        }
    	if (e[u][1]){
    	    dfs1(e[u][1]);
    	}
    }
    

    ②中序遍历

    void dfs2(int u){
        if (e[u][0]){
            dfs2(e[u][0]);
        }
        cout<<u<<" ";
    	if (e[u][1]){
    	    dfs2(e[u][1]);
    	}
    }
    

    ③后序遍历

    void dfs3(int u){
        if (e[u][0]){
            dfs3(e[u][0]);
        }
    	if (e[u][1]){
    	    dfs3(e[u][1]);
    	}
        cout<<u<<" ";
    }
    

    4.输出

    dfs1(1);
    cout<<endl;
    dfs2(1);
    cout<<endl;
    dfs3(1);
    

    重点

    cout<<endl; 不写直接image

    完整代码

    #include <bits/stdc++.h>
    using namespace std;
    vector<int> e[5010];
    int n;
    void dfs1(int u){
        cout<<u<<" ";
        if (e[u][0]){
            dfs1(e[u][0]);
        }
    	if (e[u][1]){
    	    dfs1(e[u][1]);
    	}
    }
    void dfs2(int u){
        if (e[u][0]){
            dfs2(e[u][0]);
        }
        cout<<u<<" ";
    	if (e[u][1]){
    	    dfs2(e[u][1]);
    	}
    }
    void dfs3(int u){
        if (e[u][0]){
            dfs3(e[u][0]);
        }
    	if (e[u][1]){
    	    dfs3(e[u][1]);
    	}
        cout<<u<<" ";
    }
    int main()
    {
    	cin >> n;
    	for (int i = 1; i <= n; i++)
    	{
    		int l, r;
    		cin >> l >> r;
    		e[i].push_back(l); 
    		e[i].push_back(r); 
    	}
    	dfs1(1);
        cout<<endl;
        dfs2(1);
        cout<<endl;
        dfs3(1);
    	return 0;
    }
    

    点赞点赞,不点赞,就去你家耍流氓

    image

    • @ 2024-6-4 19:00:41

      差评轻轻一点,坐着哭到两眼PwP

    • @ 2024-6-4 19:06:33

      我那会儿没点赞,睡觉时就梦见有人在我面前耍流氓

  • 1

【挑战题】二叉树的三种遍历

信息

ID
580
时间
1000ms
内存
256MiB
难度
2
标签
(无)
递交数
152
已通过
98
上传者