對二叉樹的儲存,即可採用順序儲存結構(陣列),也可採用鏈式儲存結構(鍊錶)。
在鏈式儲存結構中,每乙個節點都含有乙個資料域,兩個指標域——分別用來指向該節點的左、右子樹。利用這種節點構成的鏈式儲存結構稱為二叉鍊錶。
為簡單起見,給定一資料集,以該資料集中的元素建立一完全二叉樹。這裡不考慮非完全二叉樹的情況。**如下:
struct binarytreenode* newnode(int pos,char* s)
}return root;
}
先為當前的資料建立一節點,再判斷當前的資料是否有左、右子樹,如果有則將建立的左、右子樹的根節點設定為當前節點的左、右指標。涉及到的結構體如下:
typedef char node_type;
struct binarytreenode;
其實上述的建立過程就是把資料轉換為節點。
對二叉樹的遍歷有三種形式:先序(先遍歷根節點,再左、右子樹),中序(左-中-右),後序(左-右-中)。以先序為例,方法有兩種:遞迴與使用棧代替遞迴。分別如下:
遞迴法:
void printbinarytree(struct binarytreenode* root)
printbinarytree(root->left);
printbinarytree(root->right);
printf("%c ",root->data);
}
其具體思路為:先輸出左節點,再輸出右節點,最後輸出根節點。因為採用的是遞迴,所以實現起來非常簡單。 二叉樹入門
樹是模擬實現樹幹和樹枝的一種資料結構,如同樹根一樣,樹結構都有乙個 根結點 根節點之下如同樹的樹枝一樣,可以擁有0到n個 子結點 也就是樹的 分支 如上圖。a就是這棵樹的根節點,b c就是結點a的子結點。也就是樹枝。每一根樹枝當然可以有小樹枝,也就是子節點本身可以擁有子結點。途中d和e是b的子結點。...
二叉樹 二叉樹
題目描述 如上所示,由正整數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...