meetings 2015-08-17 10:42 采纳率: 0%
浏览 1412

关于二叉树的插入,传参的小问题

 #include <iostream>
using namespace std;
// 有序二叉树(二叉搜索树)
class Tree {
public:
    Tree (void) : m_root (NULL), m_size (0) {}

    void insert (int data) {
        //Node * a = new Node (data);
        insert (new Node (data), m_root);
        ++m_size;
    }
    void travel (void) {
        travel (m_root);
        cout << endl;
    }

private:
    // 节点
    class Node {
    public:
        Node (int data) : m_data (data),
            m_left (NULL), m_right (NULL) {}
        int m_data; // 数据
        Node* m_left; // 左树
        Node* m_right; // 右树
    };
    void insert (Node* node, Node*& tree) {
        if (! tree){
            tree = node;
        }
        else if (node) {
            if (node->m_data < tree->m_data)
                insert (node, tree->m_left);
            else
                insert (node, tree->m_right);

        }
    }


    void travel (Node* tree) {
        if (tree) {
            travel (tree->m_left);
            cout << tree->m_data << ' ';
            travel (tree->m_right);
        }
    }

    Node* m_root; // 树根
    size_t m_size; // 大小
};

int main (void) {
    Tree tree;
    tree.insert (50);
    tree.insert (60);
    tree.insert (70);
    tree.travel();
    return 0;
}

为什么insert (Node* node, Node*& tree)这句去掉引用,数据就显示不出来了

  • 写回答

5条回答 默认 最新

  • 纵横车 2015-08-17 10:53
    关注

    insert()当然要对数进行更改,当然就不能只传值,要传引用了。

    评论

报告相同问题?

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程