廣度優先遍歷
**:對於每層的節點,放到乙個用來處理節點佇列裡,另外每個佇列對應乙個vector,將每層節點放進vector
對於每個佇列,彈出先放的元素q.front,將這個元素放進vector,
隨後,將左節點和右子節點放進佇列
class solution
queue q;
q.push(root);
while (!q.empty())
}return ret;
}};
226 翻轉二叉樹
class solution
swap(root->left,root->right);
inverttree(root->left);
inverttree(root->right);
return root;
}};
迭代法,使用棧進行前序遍歷
class solution
return root;
}};
101 對稱二叉樹
//重點在於遞迴的時候左右節點的選擇
class solution else if(left == nullptr && right!=nullptr)
else if(left!=nullptr && right==nullptr)
else if(left->val != right->val)
//開始遞迴子樹
//判斷內側
bool insidesame = compare(left->right,right->left);
//判斷外側
bool outsidesame = compare(left->left,right->right);
bool same = insidesame && outsidesame;
return same;
}bool issymmetric(treenode* root)
return compare(root->left,root->right);
}};
完全二叉樹 的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其餘每層節點數都達到最大值,並且最下面一層的節點都集中在該層最左邊的若干位置。
若最底層為第 h 層,則該層包含 1~ 2h 個節點。滿二叉樹是一種特殊的二叉樹.
普通的二叉樹個數計算:
class solution
int leftnum = countnodes(root->left);
int rightnum = countnodes(root->right);
num = leftnum+rightnum + 1;
return num;
}};
完全二叉樹個數
這道題可以用滿二叉樹的性質優化計算
class solution
treenode* left = root->left;
treenode* right = root->right;
int lefth = 0,righth =0;
while(left)
while(right)
//如果左右子樹高度相同,則是滿二叉樹
if(lefth == righth)
};
二叉樹相關
1.首先建立乙個樹節點,節點有值,左節點和右節點 author 張夢楠 title package description date 2018 5 2519 27 blog www.itzmn.com 樹的節點類 public class treenode public treenode int v...
二叉樹 二叉樹的相關操作
遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...
二叉樹相關演算法
節點 class node t public node t left public node t right public node t value,node t left,node t right public node t value this value,null null 二叉樹 前中後深度...