二叉樹的處理

2021-09-12 06:54:57 字數 1779 閱讀 1355

沒有根節點,為空樹

有根節點,左子樹,右子樹。且左右子樹都是二叉樹

struct node;

node* root = null;

node* newnode(int v)

/*

本**包含二叉樹結構的定義;節點的插入;建立一棵二叉樹;三種遍歷方式;

按照層次插入還沒有實現,插入三個就終止了,也不知道為啥沒有遞迴完成

*/#include #include #include #include using namespace std;

// 定義二叉樹結構

struct treenode ;

// 生成乙個結點

treenode* newnode(int val)

// 插入乙個節點

void insert(treenode* &root,int x)

if(x < root->val)else

} // 逐層插入結點

void insert_layer(treenode* &root,int x)

if(root->left==null)

insert_layer(root->left,x);

if(root->right==null)

insert_layer(root->right,x);

} // 查詢節點,修改

void search(treenode* root,int x,int newdata)

if(root->val == x)

search(root->right,x,newdata); // 遞迴左右子樹

search(root->left,x,newdata);

}// 建立二叉樹

treenode* create(int data,int n)

return false;//執行到這裡,說明是兩邊孩子的值不同,那就沒有比較的必要了,直接return false

}// 先序遍歷

void preorder(treenode* root)

coutpreorder(root->left);

preorder(root->right);

}// 中序遍歷

void inorder(treenode* root)

inorder(root->left);

coutinorder(root->right);

}// 後序遍歷

void postorder(treenode* root)

postorder(root->left);

postorder(root->right);

cout}int main()

treenode* t = create(a,n);

cout<<"preorder"<

判斷樹是否為空。如果樹為空,那麼true;

否則,判斷樹是否有子節點。如果樹只有根節點,那麼true;

否則,判斷子節點是否有對稱點而且子節點的值是否和對稱邊相同。如果只有單邊節點,則false;或者兩邊節點的值不一致,也是false。

/*struct treenode

};*/

bool issymmetrical(treenode* proot)

bool check(treenode* left,treenode* right)

return false;//執行到這裡,說明是兩邊孩子的值不同,那就沒有比較的必要了,直接return false

}

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹 48 二叉樹 二叉樹的高度

目的 使用c 模板設計並逐步完善二叉樹的抽象資料型別 adt 內容 1 請參照鍊錶的adt模板,設計二叉樹並逐步完善的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考教材 課件,以及網盤中的鍊錶...